sql >> Database >  >> RDS >> Sqlserver

Een lopende telling en lopend totaal voor klanten berekenen met SQL

Gebruik ROW_NUMBER (link ) in plaats van 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. SQL-tabel met lijstitem versus SQL-tabel met een rij voor elk item

  2. Hoe kan ik zien of een kolom auto_increment is in mysql?

  3. Verduidelijking van de samenvoegvolgorde voor het maken van tijdelijke tabellen

  4. De instructie ALTER TABLE is in strijd met de FOREIGN KEY-beperking in SQL Server - SQL Server / TSQL-zelfstudie, deel 69