sql >> Database teknologi >  >> RDS >> Sqlserver

TSQL-2008 SUM(X) OVER (OPDELING ... ORDER BY CLAUSE)

Simpel INNER JOIN burde gøre det trick. Medmindre jeg misforstår dig, er det du ønsker en løbende total, ikke sandt?

Dette eksempel opretter en dummy-tabel med dummy-data og bruger derefter en indre joinforbindelse til den løbende total. Fra et præstationssynspunkt er Common Table Expression sandsynligvis mere effektivt. Men for overskuelighedens skyld kan jeg foretrække det indre.

/* Dummy table */ create table testing1 (col1 int not null identity(1,1), col2 varchar(5), col3 int) insert into testing1 values ('a', 10), ('a', 20), ('a', 30), ('b', 40), ('b', 50) /* Running total example */ SELECT a.col1 , a.col2 , a.col3 , SUM(b.col3) AS total FROM testing1 a INNER JOIN testing1 b ON a.col1 >= b.col1 AND a.col2 = b.col2 GROUP BY a.col1, a.col2, a.col3 ORDER BY a.col1 /* Edit to include Output */ col1 col2 col3 total 1 a 10 10 2 a 20 30 3 a 30 60 4 b 40 40 5 b 50 90

  1. SQL-forespørgsel på rownum

  2. Mystisk MySQL-fejl nær '' på linje 1

  3. Dynamisk formfeltoprettelse og lagring i databasen php mysql

  4. Oprettelse af et Gin-indeks med Trigram (gin_trgm_ops) i Django-modellen