gpt4 book ai didi

sql - 需要帮助找到正确的 T-SQL 查询

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

我不太确定如何去做这件事。基本上我有一个这样的表

UserId       DateRequested           Approved ApprovedBy  Notes
------------ ----------------------- -------- ----------- -----
1 2011-05-26 0 NULL NULL
1 2011-05-27 0 NULL NULL
1 2011-05-28 0 NULL NULL
1 2011-06-05 0 NULL NULL
1 2011-06-06 0 NULL NULL
1 2011-06-25 0 NULL NULL

其中基本上包含员工请求休假的天数。现在,当授予一天或几天时,需要将此数据复制到表格中

UserId DateFrom DateTo

基本上对于我想要的上述数据:

UserId DateFrom DateTo 
-------------------------------
1 2011-05-26 2011-05-28
1 2011-06-05 2011-06-06
1 2011-06-25 2011-06-25

即我想要 DateFrom 和 DateTo 中连续的天。现在我不知道如何在不使用 while 循环的情况下做到这一点。这是 SQL,所以我更喜欢非迭代解决方案。

请指教!!!

最佳答案

;WITH cte AS
(
SELECT *,
DATEDIFF(DAY,0,DateRequested)-
ROW_NUMBER() OVER (PARTITION BY UserId ORDER BY DateRequested) AS Grp
FROM YourTable
WHERE Approved = 1 /*Presumably - but your example data doesn't show this.*/
)
SELECT UserId,
MIN(DateRequested) AS DateFrom,
MAX(DateRequested) AS DateTo
FROM cte
GROUP BY UserId,Grp

关于sql - 需要帮助找到正确的 T-SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6099279/

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