【问题标题】:how to "replicate" a select statement in SQL Server?如何在 SQL Server 中“复制”一个 select 语句?
【发布时间】:2018-12-06 23:18:03
【问题描述】:

我需要使用以下 SELECT 向表中插入:

select 1001, '2021-Q1', null, null
union 
select 1001, '2021-Q2', null, null
union
select 1001, '2021-Q3', null, null
union 
select 1001, '2021-Q4', null, null

我需要在 2030 年之前这样做。其他一切都一样。

所以下一个插入将是这样的:

select 1001, '2022-Q1', null, null
union 
select 1001, '2022-Q2', null, null
union
select 1001, '2022-Q3', null, null
union 
select 1001, '2022-Q4', null, null

如何在无需手动操作的情况下完成此操作?

【问题讨论】:

  • 您使用的是哪个数据库引擎?
  • SQL Server,谢谢。
  • 我认为通过修改后的字符串选择的过程并不理想,建议你使用递增的ID

标签: sql sql-server replicate


【解决方案1】:

您可以使用 SQL Server 表值构造函数至少使这更容易一些 - 像这样:

SELECT
    1001,
    CAST(AYear AS VARCHAR(4)) + '-' + AQuarter,
    NULL,NULL 
FROM
    (VALUES(2021), (2022), (2023), (2024), (2025), (2026), (2027), (2028), (2029), (2030)) AS YT(AYear)
CROSS JOIN
    (VALUES('Q1'), ('Q2'), ('Q3'), ('Q4')) AS QT(AQuarter)
ORDER BY
    AYear, AQUarter

【讨论】:

    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    相关资源
    最近更新 更多