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

Изчисляване на текущ брой и текуща обща сума за клиенти с SQL

Трябва да използвате ROW_NUMBER (връзка ) вместо 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. SQL Server не освобождава памет след изпълнение на заявката

  2. Защо cast/convert от int връща звездичка

  3. Търсенето на 0x0B

  4. SQL Server 2005 Ниво на транзакция и съхранени процедури

  5. Групирайте подобни обекти в различни периоди от време, за да получите минимални и максимални дати в SQL Server