我有一個包含類似數據的表如下:總結一天的SQL Server每週訂單數據
Item Date Customer
------------------------------
apple 01/01/2017 a
apple 01/01/2017 a
apple 02/01/2017 b
apple 05/01/2017 c
apple 06/01/2017 b
apple 06/01/2017 d
apple 07/01/2017 c
apple 09/01/2017 a
banana 01/01/2017 b
banana 02/01/2017 a
我需要的是由許多獨特的客戶如何購買了該項目當天和項目分組彙總當天的周(即日+3天)以及當天。
它應該是這樣的:
Item Date Weekly Customers Daily Customers
-----------------------------------------------------------
apple 01/01/2017 2 1
apple 02/01/2017 3 1
apple 05/01/2017 3 1
apple 06/01/2017 4 2
apple 07/01/2017 4 1
apple 09/01/2017 4 1
banana 01/01/2017 2 1
banana 02/01/2017 2 1
我已經成功通過項目,天,每天獨特的客戶提供以下,我認爲總結是正確的:
SELECT
item as 'Item', boughtDate as 'Date',
COUNT(DISTINCT(customer)) as 'Daily Customers'
FROM tbl1
GROUP BY Item, Date
我真的很難與如何採取每一個不同的項目+日組合,並獲得當天(一天中的任何一方3天)當週的獨特客戶,並加入這些結果。
我一直在玩一些循環和CTE,但我似乎沒有任何值在任何給定的領域是唯一的問題。我確信有一個簡單的方法來做到這一點,我只是沒有想到?
窗口函數 –
2個子查詢和連接。你應該有(或創建)一個表來幫助確定同一周的日期。 – DVT
我剛看了一下窗口函數@JoePhillips。描述聽起來很有希望,但似乎在OVER子句中不允許使用DISTINCT?我使用over條款來查看買家的日期,但我只需要統計不同的客戶,而且客戶可以每週/每週多次購買。 – learnerDev