14. november 2009 - 20:33Der er
19 kommentarer og 1 løsning
Kumuleret sum i SQL (VB.NET)
Hej Jeg er ved at lave et program i VB.NET med en tilhørende MS SQL database. Nu skal jeg lave en query, hvor jeg gerne vil have en kollonne ekstra i Databasesettet der angiver den kumulerede sum af en af kollonnerne i databasen. Jeg har indtil videre prøvet med følgende query:
SELECT id, UserID, Dato, Rentedato, Tekst, Belob, Gennemfort, kid,(SELECT SUM(Belob) FROM Transaktioner) AS Saldo,FROM Transaktioner
Men denne accepterer den ikke. Den siger "There was an error parsing the query". Kan i se nogle fejl? Er der andre måder at lave dette på?
Hvis det skal være i SQL, så må det være noget a la:
SELECT id, UserID, Dato, Rentedato, Tekst, Belob, Gennemfort, kid,(SELECT SUM(Belob) FROM Transaktioner t2 WHERE t2.id<=t1.id) AS Saldo FROM Transaktioner t1
Den query du postede der kan jeg ikke gennemføre. Den skriver "There was an error parsing the query. [Token line number 1, Token line offset = 76, Token in error = SELECT]. Hvad kan der være galt her. Må man slet ikke have select inde i en select-sætning?
(4 rows affected) 1> select f1,(select sum(f1) from t1 a where a.f1 <= b.f1) as f1acc from t1 b 2> go f1 f1acc ----------- ----------- 1 1 2 3 3 6 4 10
Måske har det noget at gøre med at man ikke kan have to Select-statements i en. Men kan man evt. adskille det i 2 queries og så kalde den ene fra den anden?
Sløv query... hmm, det er et relativt begreb :)! Den læser alligevel alle records igennem som opfylder kriteriet, den summerer blot undervejs :) Men det er klart at der naturligvis bruges mere CPU end en plain SQL. Afhængig af apply-querien kan den ikke altid afvikles hos klienten, så.... nu denne her vi har lavet her er nem, men det kunne være en langt mere kompliceret fætter som kræver adgang til mange tabeller/ functions osv.
janus: Det er nok en korrekt antagelse at de har optimeret kørslen for de mest almindelige funktioner, eksempelvis så sum bare er en løbende optælling (syntes heller ikke det var sløvt på 100000 records) - men uden en vis optimering ville en apply nok være det.
Jeg lukker tråden nu, da den er forældet og der ikke er modtaget svar.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.