2009-03-30 10 views
1

テーブル内の1つの属性の値をチェックし、その値に基づいて異なる列のセットを選択するSQL Server 2005クエリを作成する必要があります。 どうすればいいですか?条件に基づいてselect文の列を選択する方法は?

'car'の 'type'属性の値が1,の場合、type = 1の場合、3つの列でselect 'query1'を実行します。 type = 2の場合、他の4つの列で別のselect 'query2'を実行します。

どうすればよいですか? 助けてください。

答えて

1

Ifステートメントでストアドプロシージャを調べていると思います。 CASEは動作しますが、返される列数は変更できません。

-1
SELECT 
    Col1 = CASE WHEN Type = 1 THEN (SELECT Null FROM T1) 
     ELSE (SELECT Col1 FROM T2) END 
    , Col2 = CASE WHEN Type = 1 THEN (SELECT Col1 FROM T1) 
      ELSE (SELECT Col2 FROM T2) END 
    , Col3 = CASE WHEN Type = 1 THEN (SELECT Col2 FROM T1) 
      ELSE (SELECT Col4 FROM T2) END 
    , Col4 = CASE WHEN Type = 1 THEN (SELECT Col3 FROM T1) 
      ELSE (SELECT Col4 FROM T2) END 
FROM Cars 

関連するすべてのテーブルのDDLを表示すると、おそらくより良い回答または別の(より良い方法で)アプローチが得られます。

+0

「なぜ」私とin.spiteの答えがダウングレードされたのを知りたいです。 –