Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Obliczanie bieżącej liczby i bieżącej sumy dla klientów za pomocą SQL

Powinieneś użyć ROW_NUMBER (link ) zamiast COUNT :

DECLARE @Threshold NUMERIC(19,2)=1000; -- Use the same data type as `[AMT]`'s data type

Select
  [DID]
, [AMT]
, [Gf_Date]
--, COUNT([GID]) OVER (PARTITION BY [DID] ORDER BY [Gf_Date]) [RunningGift_Count]
, ROW_NUMBER() OVER (PARTITION BY [DID] ORDER BY [Gf_Date]) [RunningGift_Count]
, SUM([AMT]) OVER (PARTITION BY [DID] ORDER BY [Gf_Date]) [CumlativeTotal]
, CASE
      WHEN SUM([AMT]) OVER (PARTITION BY [DID] ORDER BY [Gf_Date]) >= @Threshold THEN 1
      ELSE 0
  END IsThresholdPassed
FROM [dbo].[MCT]
WHERE [SC] is null
ORDER BY [DID]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sortuj według daty w SQL

  2. Jak tworzyć widoki zmaterializowane w SQL Server?

  3. SQL Server dbo.sysdiagrams to tabela użytkownika lub tabela systemowa

  4. Przechowywanie danych UTF-16/Unicode w SQL Server

  5. Wyciek pamięci w aplikacji .net