2011-12-26 25 views
1

新しいテーブルに挿入する必要があります(2列)他のテーブルと2行目のケースとの明確な説明。テーブル、ケースに挿入

ようなので:

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

したがって、基本的に最初の列のすべての値を挿入するための、2番目の列に最初の値に応じて、いくつかの可能な値のいずれかを進みます。

これは可能ですか?

答えて

3

はいこれが可能です。 aaaなどは2番目の列が確定することができるようなTable1に他の列から派生した定数ではなく、ある場合は、あなたの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 

最初の列から派生したものです(将来の更新で変更されることはありません)。計算された列定義でテーブル変数を定義するか、またはSELECTを入力してCASE式を使用するだけです。計算列の場合

DECLARE @Temp1 TABLE (
    [description] VARCHAR(50), 
    [calcColumnExample] AS CASE description 
     WHEN 'aaa' THEN 1 
     WHEN 'bbb' THEN 2 
    END 
) 
3

例は次のように作ってみる:CASEの代替手段として

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 
関連する問題