2011-12-26 88 views
1

我需要插入新表格(2列)與其他表格和第二行情況的區別描述。插入表格,案例

所以像:

Insert into @Temp1 
Select distinct description from Table1, 
CASE 
WHEN aaa then 1 
When bbb then 2 
END 

所以基本上在第一列中的每個插入值,在第二列中去幾個可能值中的一個,這取決於第一個值。

這可能嗎?

回答

3

是的,這是可能的。看起來你缺少從Simple CASE expressioninput_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 
) 
3

嘗試

爲例作這樣的:

Insert into @Temp1 
Select distinct description, 
CASE description 
WHEN 'aaa' then 1 
When 'bbb' then 2 
END 
from Table1 
2

作爲一種替代情況下,您還可以使用連接到在線表格,如這個:

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