1
A
回答
2
一個簡單的條件聚集與CROSS APPLY音樂會應該做的竅門
Declare @YourTable table ([Task] int,[Start] datetime,[End] datetime,[People] int)
Insert Into @YourTable values
(1,'2017-03-17 02:00:00','2017-03-17 08:00:00',10)
,(2,'2017-03-17 02:00:00','2017-03-17 08:00:00',5)
,(3,'2017-03-17 03:00:00','2017-03-17 05:00:00',8)
,(4,'2017-03-17 04:00:00','2017-03-17 06:00:00',10)
Select [01:00] = sum(case when DatePart(HOUR,D)=1 then People else 0 end)
,[02:00] = sum(case when DatePart(HOUR,D)=2 then People else 0 end)
,[03:00] = sum(case when DatePart(HOUR,D)=3 then People else 0 end)
,[04:00] = sum(case when DatePart(HOUR,D)=4 then People else 0 end)
,[05:00] = sum(case when DatePart(HOUR,D)=5 then People else 0 end)
,[06:00] = sum(case when DatePart(HOUR,D)=6 then People else 0 end)
,[07:00] = sum(case when DatePart(HOUR,D)=7 then People else 0 end)
,[08:00] = sum(case when DatePart(HOUR,D)=8 then People else 0 end)
,[09:00] = sum(case when DatePart(HOUR,D)=9 then People else 0 end)
From @YourTable
Cross Apply (Select Top (DateDiff(HOUR,[Start],[End])+1) D=DateAdd(HOUR,-1+Row_Number() Over (Order By (Select Null)),[Start])
From master..spt_values n1,master..spt_values n2
) B
返回
01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00
0 15 23 33 33 25 15 15 0
2
你可以用小時,理貨表和數據透視獲得此如下:如下
select ISNULL([1],0) as [1:00:00], [2] as [2:00:00],[3] as [3:00:00], [4] as [4:00:00],[5] as [5:00:00]
,[6] as [6:00:00],[7] as [7:00:00],[8] as [8:00:00],ISNULL([9],0) as [9:00:00]
from (
select Hrs= Datepart(hour,RowN),SmPeople= sum(people) from Yourtask
cross apply (
select top (datediff(hour, [start],[end])+1) RowN= DateAdd(hour, row_number() over (order by (Select null))-1, [Start])
from master..spt_values n1, master..spt_values n2
) a
group by Datepart(hour,RowN)
) CalcuatedPeople
pivot (max(SmPeople) for hrs in ([1],[2],[3],[4],[5],[6],[7],[8],[9])) p
輸出:
+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| 1:00:00 | 2:00:00 | 3:00:00 | 4:00:00 | 5:00:00 | 6:00:00 | 7:00:00 | 8:00:00 | 9:00:00 |
+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| 0 | 15 | 23 | 33 | 33 | 25 | 15 | 15 | 0 |
+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+0
它也可以,謝謝! – gaffcz
相關問題
- 1. 需要找到每隔X小時到幾小時之間
- 2. C#定時器間隔每24小時
- 3. 每小時24小時摘要百分比
- 4. R每小時摘要每5分鐘的降水量值
- 5. MySQL - 從時間戳列中選擇每隔2小時的時間間隔
- 6. 每隔一小時
- 7. 設置每12小時的時間間隔
- 8. 摘要兩次,總小時數和工作時間
- 9. 的NSTimer在後臺運行 - 需要火每隔一小時
- 10. Android - 24小時工作時間間隔
- 11. 每頁報告的摘要
- 12. TFS警報每週摘要
- 13. 將每15分鐘的間隔轉換爲R的小時間隔
- 14. 在每隔1小時的時間間隔內在文件中存儲一分鐘的Servlet請求
- 15. 摘要15分從時間使用Perl
- 16. 灌漿時間序列數據摘要
- 17. 在每隔一段時間IE 9不能在一段時間
- 18. DateDiff每天在一個時間間隔內每天
- 19. 從時間間隔每週提取
- 20. 如何在每隔一小時的時間間隔內殺死日誌運行作業?
- 21. 小組由24小時和星期 - 時間間隔
- 22. Oracle:每隔半小時取兩次
- 23. Paypal訂閱較小的時間間隔
- 24. Ajax/jquery每隔'時間間隔'調用webmethod /服務
- 25. 使用時間跨度在24小時內添加間隔
- 26. 當前時間到Python中的-GMT摘要當前時間
- 27. 轉換的時間間隔爲在SQL Server十進制小時
- 28. 在mysql中以1小時爲間隔的開始時間和結束時間之間的分隔時間
- 29. 如何在每次運行時延長間隔時間?
- 30. 在一條線(PythonicWay)中將時間序列數據拆分爲時間間隔 - 每小時
什麼是您當前的查詢是什麼樣子?你遇到了什麼錯誤? –
如果你提供輸入數據作爲文本而不是圖像 –
@ kannan:哦,你是對的,所以下次 – gaffcz