Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да увеличите брояча в select

С cte и прозоречна функция Row_Number()... Все пак трябва да отбележа, че би било най-добре, ако замените (Изберете NULL) в клаузата OVER с правилна последователност (т.е. идентичност 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

Връщане

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PIVOT Заявка за множествено присъединяване

  2. ADO.NET низ за свързване

  3. Проверка дали дадена дата се вписва между диапазон от дати

  4. Мога ли да задам ignore_dup_key за първичен ключ?

  5. Защо моето ляво присъединяване на t-sql не работи?