有效客戶的定義是:近一年內進店消費過的客戶,統計某個固定時間的我回統計,但是若要一下子把今年每個月的都顯示出來,就搞不明白這個該怎么寫 SQL 了?
比如:
2020年3月份的有效客戶就是,2019年3月份到2020年5月份進店消費的客戶
2020年4月份的有效客戶就是,2019年4月份到2020年5月份進店消費的客戶
2020年5月份的有效客戶就是,2019年5月份到2020年5月份進店消費的客戶
……
現在要同時顯示出
月份 有效客戶數
1月份
2月份
3月份
4月份
5月份
謝謝大神指點!
uj5u.com熱心網友回復:
你的表中有客戶進店消費的時間吧先獲取時間的年月,按年月分組求和金額就好了
SELECT YearMonth,COUNT(客戶) AS '客戶數' FROM Table GROUP BY YearMonth
如果要去重復就
SELECT YearMonth,COUNT(Distinct 客戶) AS '客戶數' FROM Table GROUP BY YearMonth
uj5u.com熱心網友回復:
非常感謝您的回復,進店消費的時間是有的,但這樣計算是有錯誤的,因為每個月的起始時間和截至時間都是不一樣的,直接這樣按月份分組統計后的結果是“每月”進店消費的客戶,而不是“近一年”進店消費的客戶
uj5u.com熱心網友回復:
條件加個年過濾就好了 ,你看下你的時間是什么型的,比如下面是當前年 2020-1 =2019 就可以獲取上一年了
where Left(時間,4) = cast(replace(convert(varchar(4),dateadd(month,0,getdate()),120),'-','') as int) -1
uj5u.com熱心網友回復:
o.SettleDate BETWEEN DATEADD(yy, -1, CONVERT(datetime,GETDATE()+ ' 00:00:00.00',121) ) AND CONVERT(datetime,GETDATE()+ ' 23:59:59.99',121)
我是加了“近一年”的過濾條件,但這樣計算出來的是當前日期“近一年”每個月的客戶,而實際上要的是:
比如現在是2020年5月份,那么查詢后得到的結果應該是
3月份客戶數: 2019年3月至2020年3月份消費的
4月份客戶數: 2019年4月至2020年4月份消費的
5月份客戶數: 2019年5月至2020年5月份消費的
uj5u.com熱心網友回復:
思考這個問題的話,你的時間是兩部分,一個是實際業務時間,一個是你想要的每個月對應的過去一年的時間。我們需要將每個月對應的過去一年的時間單獨拿出來進行組裝就行了。
create table #TIMES(
monthdef varchar(10),
monthcut varchar(10)
)
INSERT INTO #TIMES
VALUES('2020-05','2020-05'),('2020-05','2020-04'),('2020-05','2020-03'),('2020-05','2020-02'),('2020-05','2020-01'),
('2020-05','2019-12'),('2020-05','2019-11'),('2020-05','2019-10'),('2020-05','2019-09'),('2020-05','2019-08'),
('2020-05','2019-07'),('2020-05','2019-06'),('2020-05','2019-05')
當然我這會是直接插入的,實際作業上你要自己寫回圈寫資料。這個思路是資料倉庫的解決方案。希望能幫到你。
uj5u.com熱心網友回復:
WITH CTE
AS
(SELECT '2020'+RIGHT('00'+CAST(NUMBER+1 AS VARCHAR),2) AS MON,
DATEADD(MONTH,NUMBER,CAST('2020-01-01' AS DATE)) AS BEGIN_DATE,
DATEADD(MONTH,NUMBER+1,CAST('2020-01-01' AS DATE)) AS END_DATE
FROM (SELECT MONTH(GETDATE()) AS MON) AS A
JOIN MASTER.DBO.SPT_VALUES B ON A.MON>B.NUMBER
WHERE TYPE='P' )
SELECT MON,COUNT(DISTINCT 客戶)
FROM CTE AS A
JOIN TABLE B ON B.銷售日期>=A.BEGIN_DATE AND B.銷售日期<A.END_DATE
GROUP BY MON
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/34495.html
標籤:疑難問題
上一篇:always on 備庫一直處于 已同步/正在恢復 狀態
下一篇:sqlserver存盤程序問題
