0

pno と rno という名前の 2 つの列があり、どちらも注文番号を持つ varchar であり、現在の要件は次のとおりです。

rno が null でない場合はActual Generated を出力し、そうでない場合はForecast Generated を出力する必要があります。

pno が null でない場合は、 Reconciled出力する必要があります。

私のクエリは次のとおりです。

 select  
       case
        when (pno!=null) then 'Reconciled'
       when (pno=null) then 'Forecast1 Generated'
       when (rno=null) then 'Forecast Generated'
       when (rno!=null) then 'Actual Generated'
       end as Status
 from tablexyz

私がそれを実行しているとき、私は pno または rno の case ステートメントの結果セットのみを取得します。期待される出力はすべての case ステートメントを返すはずです。すべてのレコードが必要なため、and in case ステートメント条件を使用できませんでした。これを Dbvisualizer で実行します。

前もって感謝します。

4

1 に答える 1

0

pno is not nullSQL では代わりに使用する必要がありますpno!=null。SQL は 3 つの値を持つロジックを使用し、pno!=null真でも偽でもない UNKNOWN ですが、真ではないため、大文字と小文字は区別されません。

したがって、ステートメントは次のようになります

select  
       case
       when (pno is not null) then 'Reconciled'
       when (pno is null) then 'Forecast1 Generated'
       when (rno is null) then 'Forecast Generated'
       when (rno is not null) then 'Actual Generated'
       end as Status
 from tablexyz
于 2013-08-16T20:36:54.147 に答える