Sql-Server

查詢知道誰支付了超過10k

  • September 4, 2015

我有一張包含付款資訊的表格,如下所示:

ID COSTUMER_ID DATEPAID     AMOUNT
1    1        2012-01-01      50
2    1        2012-02-01      100
3    1        2012-03-01      70
4    2        2012-03-01     6000
4    2        2012-09-01     3000
4    2        2014-04-01     8000
5    3        2013-03-01     9000
6    3        2013-08-01     3000

等等。我需要知道哪些客戶在 12 個月內支付了超過 10k 的費用。(在範例中,只有客戶 3 適合)。不要介意,唯一的標準是任何連續 12 個月組合中的 SUM(AMOUNT) > 10000。

但我堅持下去。有任何想法嗎?我正在使用 SQL Server 2012。

一種方法是選擇返回表並對行之前的行求和,然後將其用作內部查詢以便能夠在 where 子句中使用求和,如下所示:

select *
from (
 select
   P1.ID,
   P1.CUSTOMER_ID,
   P1.DATEPAID,
   (select sum(P2.AMOUNT) 
     from PAYMENT P2 
     where P1.CUSTOMER_ID = P2.CUSTOMER_ID and 
     P2.DATEPAID <= P1.DATEPAID and 
     P2.DATEPAID >= dateadd(month, -12, P1.DATEPAID)) as PAID12M
 from
   PAYMENT P1
) X
where PAID12M > 10000

SQL Fiddle中的範例。

這將返回條件匹配的所有行,如果您只需要 customer_id 或第一行或類似的東西,則必須使外部查詢更複雜一些。

引用自:https://dba.stackexchange.com/questions/113117