如何解决SQL问题-如何创建日期+小时维度表?
我想创建一个表格,显示自2020年1月1日以来的每个日期的0到24小时(直到当前)。它看起来像这样: enter image description here
第1列:从1/1/2020到当前的日期 第2栏:0-24小时,每个日期重复
解决方法
这是使用T-SQL进行此操作的一种方法:
with
tally as
(
select top 1000 n = row_number() over(order by (select null)) - 1 from sys.messages
),calendar as
(
select [Date] = cast(dateadd(d,n,'1/1/2020') as date) from tally where n < datediff(d,'1/1/2020',getdate())
),[hours] as
(
select top 24 n from tally
)
--select * from tally;
--select * from calendar;
select [Date] = format(c.[Date],'M/d/yyyy'),Hrs = h.n
from [hours] h
cross join calendar c
order by c.[Date],h.n;
tally
CTE创建具有从零开始的索引的行。calendar
CTE创建的日期是2020年1月1日到今天。hours
CTE创建从0到23的小时。
最终查询将创建calendar
和hours
的笛卡尔积。
这是生成所需数据的查询。如果要将数据保留在表中,则需要将插入逻辑添加到最终查询中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。