我需要插入新表(2列)与其他表和第二行的不同描述。
所以喜欢:
Insert into @Temp1
Select distinct description from Table1,
CASE
WHEN aaa then 1
When bbb then 2
END
所以基本上对于第一列中的每个插入值,在第二列中,取决于第一个值,取几个可能值中的一个。
这可能吗?
答案 0 :(得分:3)
是的,这是可能的。您似乎错过了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
时使用SELECT
表达式。
计算列案例
的示例DECLARE @Temp1 TABLE (
[description] VARCHAR(50),
[calcColumnExample] AS CASE description
WHEN 'aaa' THEN 1
WHEN 'bbb' THEN 2
END
)
答案 1 :(得分:3)
尝试这样做:
Insert into @Temp1
Select distinct description,
CASE description
WHEN 'aaa' then 1
When 'bbb' then 2
END
from Table1
答案 2 :(得分:2)
作为CASE的替代方案,您还可以使用联接到内联表,如下所示:
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