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

Sådan øges tælleren i select

Med en cte- og vinduesfunktion Row_Number()... Jeg skal dog bemærke, at det ville være bedst, hvis du erstatter (Select NULL) i OVER-sætningen med en korrekt sekvens (dvs. identitet int, datetime).

Declare @YourTable table (ColumnA int)
Insert Into @YourTable values (1),(0),(0),(0),(1),(0),(0),(0),(0),(1),(0),(1),(0),(0),(1),(0)

;with cte as (
    Select *,RN=Row_Number() over (Order By (Select Null)) from @YourTable
)
Select A.ColumnA
      ,ColumnB = sum(B.ColumnA)
 From  cte A
 Join  cte B on (B.RN<=A.RN)
 Group By A.ColumnA,A.RN
 Order By A.RN

Returnerer

ColumnA ColumnB
1       1
0       1
0       1
0       1
1       2
0       2
0       2
0       2
0       2
1       3
0       3    
1       4
0       4
0       4
1       5
0       5


  1. Mysql-forespørgselsfejl - Auto-mønter ADD

  2. oprettelse af SQL-script

  3. IN-klausul for Oracle Prepared Statement i Python cx_Oracle

  4. Hvad er en effektiv måde at lave en OG/ELLER søge i Django-Postgres-app?