gpt4 book ai didi

sql - 对于两个日期之间的每一天,添加一行包含相同的信息,但仅在开始/结束列中添加当天

转载 作者:行者123 更新时间:2023-12-02 10:42:26 25 4
gpt4 key购买 nike

我有一个表,其类型为 varchardatetimedatetime:

NAME | START | END
Bob | 10/30 | 11/2

我可以查找什么 SQL 查询来了解如何创建该表?:

NAME | START | END
Bob | 10/30 | 10/30
Bob | 10/31 | 10/31
Bob | 11/01 | 11/01
Bob | 11/02 | 11/02

这仅在非常小的数据集上运行一次。无需优化。

最佳答案

您可能需要一个递归 CTE

CREATE TABLE #dates(NAME  VARCHAR(50),START DATETIME,[END] DATETIME)

INSERT INTO #dates
VALUES ('Bob','2014-10-30','2014-11-02')

DECLARE @maxdate DATETIME = (SELECT Max([end]) FROM #dates);

WITH cte
AS (SELECT NAME,
START,
[END]
FROM #dates
UNION ALL
SELECT NAME,
Dateadd(day, 1, start),
Dateadd(day, 1, start)
FROM cte
WHERE start < @maxdate)
SELECT *
FROM cte

输出:

name    START       END
---- ---------- ----------
Bob 2014-10-30 2014-10-30
Bob 2014-10-31 2014-10-31
Bob 2014-11-01 2014-11-01
Bob 2014-11-02 2014-11-02

关于sql - 对于两个日期之间的每一天,添加一行包含相同的信息,但仅在开始/结束列中添加当天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com