2

特定の製品の注文のテーブルと、販売中の製品のテーブルがあります。(これは理想的なデータベース構造ではありませんが、私の制御範囲外です。) 私がやりたいのは、注文テーブルを製品番号を使用して販売テーブルに外部結合することですが、販売テーブルからの特定のデータを含めたくありません。結合が存在する場合は Y、出力にない場合は N が必要です。SQLでこれを行う方法を誰か説明できますか?

前もって感謝します!

4

3 に答える 3

4

CASEコンストラクトを使用できるはずで、次のようになります。

select
    order.foo,
    case
        when sale.argle is null then 'N'
        else 'Y'
    end
from order
left join sale on order.product_number = sale.product_number;
于 2010-05-13T19:51:22.763 に答える
2

私は通常、このような状況では NVL2 を使用します...

SELECT col_one
     , NVL2( col_one, 'Y', 'N' )   col_one_exists
     , col_two
     , NVL2( col_two, 'Y', 'N' )   col_two_exists
  FROM ( SELECT '12345'   col_one
              , NULL   col_two
           FROM dual
       )

これを返します:-

COL_ONE  COL_ONE_EXISTS  COL_TWO  COL_TWO_EXISTS
12345    Y                         N
于 2010-05-14T07:23:54.433 に答える
0

試してください(未テスト):

SELECT O.*, DECODE(NVL(p.product_num, 'X'), 'X', 'N', 'Y')
  FROM Orders AS o LEFT JOIN Products AS p ON o.Product_Num = p.Product_Num

NVL は「p.product_num」のヌルを「X」に変換し、DECODE の「X」と等しいと比較して「N」を生成します。null 以外の製品番号は、'X' と等しくない数値になるため、'Y' が生成されます。

于 2010-05-13T19:57:50.580 に答える