碰到一個這樣的需求,需要查詢每天的產(chǎn)量,直接 group 是可以分出不同天的產(chǎn)量,但是如果當天沒有生產(chǎn),就會少一條那一天的記錄,而不是那一天顯示產(chǎn)量為0,這樣不方便前端顯示曲線。
于是找到下面的辦法,按月份顯示產(chǎn)量,如果當天沒有生產(chǎn),產(chǎn)量顯示為 0。其他按日,按年查詢也可以根據(jù)下面的框架修改。
declare @date datetime set @date= '2023-12-01 00:00:00.000'; with t as ( select number 日期 from master..spt_values with(nolock) where type= N'P' and number >= 1 and number <= datediff(DAY, DATEADD(MONTH, DATEDIFF(MONTH,0,@date), 0), DATEADD(MONTH, DATEDIFF(MONTH, 0, @date) + 1, 0)) ), t2 as ( SELECT DATEPART(day, DateTime_Offload) AS [日], count( [ID]) 產(chǎn)量 FROM [dbo].[Production_Data] where DateTime_Offload > dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0, @date), 0)) and DateTime_Offload < dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0, @date) + 1, 0)) and Station_Offload = 'OP265' group by DATEPART(day, DateTime_Offload) ) select 日期, case when (產(chǎn)量 is null) then 0 else 產(chǎn)量 end 產(chǎn)量 from t left join t2 on t.日期 = t2.日
按每個月的實際日期數(shù)生成如下(這里值演示了5天,實際查詢會顯示當月的真實天數(shù)):
| 日期 | 產(chǎn)量 |
| 1 | 64 |
| 2 | 0 |
| 3 | 97 |
| 4 | 0 |
| 5 | 0 |
浙公網(wǎng)安備 33010602011771號