我正在使用SQL Server 2008。
我有一个包含大量列的表,其中包括“开始日期时间”和“开始日期时间”。因此,每行都有一个“开始日期时间”和一个“结束日期时间”。 我需要为每行“开始日期时间”和“结束日期时间”之间的每一天生成一个新行。我将使用此表来生成每天在医院中占用的ICU病床数量。
我的表中的示例数据:
xid
期望的输出:
zid
我已经尝试了游标和一些CTE,但我是SQL的新手,很容易混淆。理想情况下,该解决方案将允许我将现有查询粘贴到其正文中,而无需修改现有查询。我不想使用drop table,因为这最终会被送入画面并每天更新。
从我的经验表中无法处理丢弃表。谢谢你的帮助。
谢谢@scsimon你的建议帮了大忙!唯一的问题是你的cte没有生成'所需输出'的第一行,见下文。
使用点击率输出:
sid
期望的输出:
simx
你好@scsimon
以下是实际数据。再一次感谢你的帮助。我实际上是在度假,所以我的互联网很乱,所以原谅迟到的回复。在审查数据时,我意识到我忽略了包括患者可能在同一天被转移两次,因此“开始日期时间”和“结束日期时间”是不同时间的相同日期。我相信这是我的问题的原因。 '开始日期时间'和'结束日期时间'相同的所有行的'Mydate'等于NULL,当它应该等于该日期时。原谅我的格式化,我花了这么长时间来格式化。谢谢你的帮助。
我的数据:
zsim
答案 0 :(得分:0)
假设您的数据库中有日期表
使用" ON StartDate> = DateTable.Date和EndDate< = DateTable.Date" INNER JOIN到该日期表。条件。
如果您没有该表,则可以轻松地重新创建 - 物理表,临时表,表变量或表函数。
替代解决方案 - 递归CTE,但如果您有物理预先填充的日期表,它不会比上述解决方案表现更好。
答案 1 :(得分:0)