Sql-Server
查詢知道誰支付了超過10k
我有一張包含付款資訊的表格,如下所示:
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 或第一行或類似的東西,則必須使外部查詢更複雜一些。