基于 Distinct 结果集在 Microsoft SQL Server 中创建表
Posted
技术标签:
【中文标题】基于 Distinct 结果集在 Microsoft SQL Server 中创建表【英文标题】:Create table in Microsoft SQL Server based on Distinct result set 【发布时间】:2021-01-05 11:04:53 【问题描述】:我的用例是根据不包含附加的 YYYYMM 日期的不同值的结果集为每个月创建行。
不同数据结果集示例
列:姓名、年龄、工作时间
米克尔, 25, 160预期结果
列:姓名、年龄、工作时间、日期(YYYYMM),每月 2 年(202001、202002、202003 等)
Miquell, 25, 160, 202001
Miquell, 25, 160, 202002
Miquell, 25, 160, 202003
这可以通过简单的解决方案完成吗?当我更改月份值时,复制带有时间戳的数据并继续调整并添加到临时表中似乎对用户不太友好。
感谢您的帮助,
【问题讨论】:
用您正在使用的数据库标记您的问题。 【参考方案1】:您可以使用递归 CTE 计算日期并最终加入您拥有的行。
WITH
Recursion AS
(
SELECT CAST('2020-01-01' AS date) AS D
UNION ALL
SELECT DATEADD(MONTH, 1, D)
FROM Recursion
WHERE D < '2100-12-01'
)
SELECT 'Miquell' AS Name, 25 AS Age, 160 AS WorkingHours, CONVERT(CHAR(6), D, 112)
FROM Recursion
OPTION (maxrecursion 0);
【讨论】:
以上是关于基于 Distinct 结果集在 Microsoft SQL Server 中创建表的主要内容,如果未能解决你的问题,请参考以下文章