0

問題を解決しました... 2 番目のコードを参照してください

これは、異なるテーブルの 2 行のシリアル番号を比較する SQL ステートメントです。一致する場合は「はい」が表示されますが、一致しない場合は「いいえ」が表示されます。これは、異なるテーブルで 2 つの異なる理由で 2 回行われます。

SELECT  table1.serial1, table1.serial2,
        CASE WHEN table2.serial1 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol1],
        CASE WHEN table3.serial2 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol2]
FROM    table1
        LEFT JOIN table2
            ON table2.serial1 = table1.serial1
        LEFT JOIN dbo.EPG
            ON table3.serial2 = table1.serial2

私がやりたいことは、最初または2番目の列がはいの場合、行にはいを配置する別の列を作成することです。それ以外の場合は、いいえを表示します。計算された列を比較できないことに気付いたので、私が探していたのは、式を繰り返して or ステートメントを運がないことでした。私は基本的なSQL以外のものを書いた経験があまりありません...これはmtyの試みです:

SELECT  DISTINCT table1.serial1, table1.serial2,
        CASE WHEN table2.serial1 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol1],
        CASE WHEN table3.serial2 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol2],
        CASE WHEN table3.serial2 IS NULL OR table2.serial1 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol2]
FROM    table1
        LEFT JOIN table2
            ON table2.serial1 = table1.serial1
        LEFT JOIN dbo.EPG
            table3.serial2 = table1.serial2
4

1 に答える 1

0
  • table3.serial2 OR table2.serial1 IS NULLあなたが探している状態ではありません。が必要table3.serial2 IS NULL OR table2.serial1 IS NULLです。
  • 同じエイリアスを持つ 2 つの異なる値を返そうとしています[computedCol2]
于 2012-05-28T14:50:53.133 に答える