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

Beregning af et løbende antal og løbende total på tværs af kunder med SQL

Du skal bruge ROW_NUMBER (link ) i stedet for 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. Migrer nogle data fra MySQL til MSSQL

  2. Slet poster fra kildetabellen, efter at disse er blevet overført via lagret procedure til måltabellen

  3. Postgresql Opret unikt indeks

  4. Hurtig måde at generere sammenkædede strenge i Oracle