合并2条select语句的输出,并将其放入SQL Server存储过程中的单列临时表中

时间:2019-11-18 10:57:22

标签: sql sql-server stored-procedures

我在StackOverflow上尝试了多个帖子,但没有找到适合我的特定情况的帖子。所以问一个问题:我正在SQL Server 2012中使用存储过程,并创建仅具有单列plan_year的临时表,如下所示:

DECLARE @tbl_PlanYears TABLE
(
    plan_year VARCHAR(4)
);

现在我有一个数组[years] planYears,我想将它们存储到此表变量中。另外,我想将当前年份存储在此列中。

我正在使用以下代码进行插入:

INSERT INTO @tbl_PlanYears
    SELECT string FROM udf_SplitString (@planYears,',')
    UNION
    SELECT YEAR(GETDATE());

来自planYears的字符串已正确存储。但是,如何在不替换以前年份的情况下,在同一列中存储当前年份值呢?

2 个答案:

答案 0 :(得分:0)

UNION ALL代替UNION

INSERT @tbl_PlanYears
SELECT string FROM udf_SplitString (@planYears,',')
UNION ALL
SELECT YEAR(getdate());

答案 1 :(得分:0)

您应该对类型保持一致。如果您希望当前年份也重复出现在字符串中,请使用UNION ALL

INSERT @tbl_PlanYears (plan_year)
    SELECT string FROM udf_SplitString(@planYears, ',')
    UNION ALL
    SELECT DATEPART(YEAR, getdate());

UNION删除重复项。