我有資料集,我需要計算在接下來的 6 個月內創建的發票創建發票,包括在同一天創建的任何其他發票。這是一些示例資料:
| 顧客 | 發票 | 日期 | 預期答案 |
|---|---|---|---|
| 1 | 一種 | 2021 年 1 月 1 日 | 2 |
| 1 | 乙 | 2021 年 3 月 1 日 | 3 |
| 1 | C | 2021 年 5 月 1 日 | 3 |
| 1 | D | 2021 年 8 月 1 日 | 2 |
| 1 | 乙 | 2021 年 8 月 1 日 | 2 |
| 1 | F | 2021 年 10 月 1 日 | 0 |
| 2 | Z | 2021 年 1 月 1 日 | 2 |
| 2 | 是 | 2021 年 5 月 1 日 | 3 |
| 2 | X | 2021 年 5 月 1 日 | 3 |
| 2 | W | 2021 年 10 月 1 日 | 1 |
| 2 | 五 | 2021 年 10 月 1 日 | 1 |
uj5u.com熱心網友回復:
因此,您似乎想計算每個客戶在未來 6 個月內發生的行數。使用該邏輯,我得到了您的預期結果。
計算每個客戶 6 個月內的未來發票
DROP TABLE IF EXISTS #Invoice
CREATE TABLE #Invoice
(
Customer INT
,Invoice CHAR(1)
,InvoiceDate DATE
)
INSERT INTO #Invoice
VALUES
(1,'A','2021-01-01')
,(1,'B','2021-03-01')
,(1,'C','2021-05-01')
,(1,'D','2021-08-01')
,(1,'E','2021-08-01')
,(1,'F','2021-10-01')
,(2,'Z','2021-01-01')
,(2,'Y','2021-05-01')
,(2,'X','2021-05-01')
,(2,'W','2021-10-01')
,(2,'V','2021-10-01')
SELECT *
FROM #Invoice AS A
OUTER APPLY (
SELECT COUNT(*) AS InvoiceCnt
FROM #Invoice AS DTA
WHERE A.Customer = DTA.Customer /*Match on same customer*/
AND A.Invoice <> DTA.Invoice /*Don't join row to self*/
AND A.InvoiceDate BETWEEN DATEADD(mm,-6,DTA.InvoiceDate) AND DTA.InvoiceDate /*Look for invoices within 6 months*/
) AS B
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432858.html
