插入表格,案例
问题描述:
我需要插入新表格(2列)与其他表格和第二行情况的区别描述。插入表格,案例
所以像:
Insert into @Temp1
Select distinct description from Table1,
CASE
WHEN aaa then 1
When bbb then 2
END
所以基本上在第一列中的每个插入值,在第二列中去几个可能值中的一个,这取决于第一个值。
这可能吗?
答
是的,这是可能的。看起来你缺少从Simple CASE expression的input_expression
并在错误的地方FROM
..
INSERT INTO @Temp1
SELECT DISTINCT description,
CASE description
WHEN aaa THEN 1
WHEN bbb THEN 2
END
FROM Table1
当然,如果aaa
等为常数,而不是从其他列Table1
这样推导出的第二列可确定性派生自第一列(并且在将来的更新中它不会被改变),根本没有任何意义可以存储它。您可以使用计算列定义来定义表格变量,或者只需使用CASE
表达式即可。计算列的情况下
DECLARE @Temp1 TABLE (
[description] VARCHAR(50),
[calcColumnExample] AS CASE description
WHEN 'aaa' THEN 1
WHEN 'bbb' THEN 2
END
)
答
尝试
为例作这样的:
Insert into @Temp1
Select distinct description,
CASE description
WHEN 'aaa' then 1
When 'bbb' then 2
END
from Table1
答
作为一种替代情况下,您还可以使用连接到在线表格,如这个:
SELECT DISTINCT
t.Description,
x.SpecialValue
FROM Table1 t
INNER JOIN (
SELECT 'aaa', 1 UNION ALL
SELECT 'bbb', 2 UNION ALL
…
) x (Description, SpecialValue) ON t.Description = x.Description