sql-server - 在 T-SQL 中取消组合表中的日期值
问题描述
我有下表 - tbl1:
ClientID DateIn DateOut
2293 04/06/2018 04/10/2018
2295 08/05/2019 08/07/2019
我需要以下结果
ClientID Date
2293 04/06/2018
2293 04/07/2018
2293 04/08/2018
2293 04/09/2018
2293 04/10/2018
2295 08/05/2019
2295 08/06/2019
2295 08/07/2019
因此,新的[Date]字段将代替DateIn - DateOut ,将上述日期“扩展”为与ClientID关联的单个值。
我对这里的方法有点困惑。请帮忙。
解决方案
您可以尝试使用 CTE recurcive
;WITH CTE AS (
SELECT ClientID ,DateIn ,DateOut
FROM T
UNION ALL
SELECT ClientID,
DATEADD(DAY,1,DateIn),
DateOut
FROM CTE
WHERE DATEADD(DAY,1,DateIn) <= DateOut
)
SELECT ClientID,DateIn as 'Date'
FROM CTE
ORDER BY ClientID,DateIn
推荐阅读
- c - recv 函数(在 Client 的代码中)返回 0
- chart.js - 轴的起点和终点之间的空间
- javascript - 谷歌材料图表按月在 xAxis 上分组并格式化日期
- php - Symfony - 类 Omnipay\PayPal\ExpressGateway 未找到
- android - 使用资源缩减和 Proguard 签署应用程序后应用程序崩溃
- swift - Xcode 的布局问题
- html - 我无法通过单击拼写检查图标检查文本区域输入中的拼写
- angularjs - 根据列表填充表字段 - AngularJS
- hyperledger-fabric - 从结构运行 make peer 命令时出错
- c# - 如何在 linq 中使用 where