基于 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 中创建表的主要内容,如果未能解决你的问题,请参考以下文章

结果集在执行查询时只返回一行

结果集在 Java 中不起作用

结果集在while循环中仅迭代一次

使用可滚动结果集在休眠中批量读取数据

MongoDB结果集在执行查询后被修改

怎么分析关注的功能基因集在转录组结果中表现如何?