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. 每小时24小时摘要百分比
- 3. R每小时摘要每5分钟的降水量值
- 4. 设置每12小时的时间间隔
- 5. 摘要两次,总小时数和工作时间
- 6. 的NSTimer在后台运行 - 需要火每隔一小时
- 7. Android - 24小时工作时间间隔
- 8. 将每15分钟的间隔转换为R的小时间隔
- 9. 每页报告的摘要
- 10. 在每隔一段时间IE 9不能在一段时间
- 11. 小组由24小时和星期 - 时间间隔
- 12. Paypal订阅较小的时间间隔
- 13. 使用时间跨度在24小时内添加间隔
- 14. 转换的时间间隔为在SQL Server十进制小时
- 15. 在一条线(PythonicWay)中将时间序列数据拆分为时间间隔 - 每小时
- 16. 当前时间到Python中的-GMT摘要当前时间
- 17. Mysql - 摘要表
- 18. PHP多少小时都在一定的时间间隔
- 19. 确定24小时日期时间是否在间隔内
- 20. Fullcalendar需要帮助(增加每小时的时间段)
- 21. 如何在10-19之间每隔两小时设置一次Cron任务
- 22. 获取时间每隔1秒的JavaScript
- 23. 集团在日期时间熊猫为三个小时的时间间隔
- 24. 以24小时为间隔计划
- 25. MySQL按小时间隔获取记录
- 26. 摘要动态添加列的每行
- 27. 每个API级别变更摘要?
- 28. 在每个特定时间间隔后调度r函数
- 29. MySQL在一个时间间隔内获得每日计数
- 30. 等待定时器,运行每个时间间隔?
什么是您当前的查询是什么样子?你遇到了什么错误? –
如果你提供输入数据作为文本而不是图像 –
@ kannan:哦,你是对的,所以下次 – gaffcz