【发布时间】:2019-08-27 09:55:32
【问题描述】:
我有一个 SELECT INTO #tTable SELECT CASE WHEN 条件 THEN value1 ELSE value2 查询。 验证特定条件后,我必须插入 #tTable 2 行而不是 1 行,它们仅在 1 列中彼此不同。
我是这样解决这个问题的:
在 #tTable 中插入一个 foo 行,其中包含我的列 v1v2 的值
插入#tTable value1 where col = v1v2
插入#tTable value2 where col = v1v2
从 #tTable 中删除,其中 col = v1v2
有没有更好、性能更高的方法来做到这一点?有没有办法在 INSERT INTO #table SELECT CASE WHEN 语句中插入 2 行?
例子:
INSERT INTO #tTable (col1, col2, col3)
SELECT T.col1, T.col2, CASE WHEN T.col1 > T.col2 THEN v1v2
WHEN T.col1 = T.col2 THEN value1 ELSE value2 END
FROM Table1 as T;
INSERT INTO #tTable (col1, col2, col3)
SELECT T.col1, T.col2, value1
FROM Table1 as T
WHERE T.col3 = v1v2;
INSERT INTO #tTable (col1, col2, col3)
SELECT T.col1, T.col2, value2
FROM Table1 as T
WHERE T.col3 = v1v2;
DELETE FROM #tTable
WHERE col3 = v1v2;
当 T.col1 > T.col2 时,我必须插入 2 行(一行带有 value1,另一行带有 value2)
编辑:
其实我的查询是这样的:
INSERT INTO #tTable (col1, col2, col3)
SELECT T.col1, T.col2,
CASE WHEN condition1 AND condition2 AND condition3 THEN value1
WHEN condition4 AND condition5 AND condition6 THEN value2
WHEN condition7 AND condition8 AND condition9 THEN v1v2 END
FROM Table1 as T
【问题讨论】:
-
样本数据和预期结果将帮助我们在这里为您提供帮助。第一条语句不是有效的 SQL,因此显示您的实际尝试也会很有用。
-
请阅读tsql tag info和edit你的问题的前三段。
-
也发布您的查询。
-
我无法发布我的真实查询,但这是我的问题(已编辑问题)
标签: sql-server sql-insert