多个“开始日期时间”和“结束日期时间”。为开始日期时间和结束日期时间之间的每个日期生成一个新行

时间:2016-08-17 01:22:02

标签: sql-server datetime

我正在使用SQL Server 2008。

我有一个包含大量列的表,其中包括“开始日期时间”和“开始日期时间”。因此,每行都有一个“开始日期时间”和一个“结束日期时间”。 我需要为每行“开始日期时间”和“结束日期时间”之间的每一天生成一个新行。我将使用此表来生成每天在医院中占用的ICU病床数量。

我的表中的示例数据:

xid

期望的输出:

zid

我已经尝试了游标和一些CTE,但我是SQL的新手,很容易混淆。理想情况下,该解决方案将允许我将现有查询粘贴到其正文中,而无需修改现有查询。我不想使用drop table,因为这最终会被送入画面并每天更新。

从我的经验表中无法处理丢弃表。谢谢你的帮助。

谢谢@scsimon你的建议帮了大忙!唯一的问题是你的cte没有生成'所需输出'的第一行,见下文。

使用点击率输出:

sid

期望的输出:

simx

你好@scsimon

以下是实际数据。再一次感谢你的帮助。我实际上是在度假,所以我的互联网很乱,所以原谅迟到的回复。在审查数据时,我意识到我忽略了包括患者可能在同一天被转移两次,因此“开始日期时间”和“结束日期时间”是不同时间的相同日期。我相信这是我的问题的原因。 '开始日期时间'和'结束日期时间'相同的所有行的'Mydate'等于NULL,当它应该等于该日期时。原谅我的格式化,我花了这么长时间来格式化。谢谢你的帮助。

我的数据:

zsim

2 个答案:

答案 0 :(得分:0)

假设您的数据库中有日期表

使用" ON StartDate> = DateTable.Date和EndDate< = DateTable.Date" INNER JOIN到该日期表。条件。

如果您没有该表,则可以轻松地重新创建 - 物理表,临时表,表变量或表函数。

替代解决方案 - 递归CTE,但如果您有物理预先填充的日期表,它不会比上述解决方案表现更好。

答案 1 :(得分:0)

首先创建日期的CTE,然后加入您的数据,为每个日期创建1行....

submitelement.addEventListener("click", Func);

<强>结果

results