2017-02-08 21 views
1

Vet_Ben_Code列にNULL値と数値が含まれているこのクエリがあります。 すべてのNULLを0として読み込み、他のすべての数値が同じになるようにします。これはどのように行うのですか。ここでは、クエリは次のとおりです。NULLの場合0その他の値

SELECT STU.Term_Code, 
    STU.PIDM, 
    STU.Vet, 
    RXR.Vet_Ben_Code 

FROM 
    (SELECT CST.Term_Code, 
    CST.PIDM, 
    SPB.Vet 

    FROM 
    (SELECT Term_Code, 
     PIDM 

    FROM CHELINK.Combined_Student_Table 
    WHERE Term_Code BETWEEN '201170' AND '201670' 
    )CST 
    INNER JOIN 
    (SELECT SPBPERS_PIDM, 
     SPBPERS_VETC_FILE_NUMBER Vet 

    FROM SATURN.SPBPERS 
    WHERE SPBPERS_VETC_FILE_NUMBER LIKE 'Y%' 
    OR SPBPERS_VETC_FILE_NUMBER LIKE 'y%' 
    )SPB 

    ON CST.PIDM = SPB.SPBPERS_PIDM 
)STU 

LEFT JOIN 
    (SELECT RXRVETN_Term_Code_VA AS Term_Code, 
    RXRVETN_PIDM    AS PIDM, 
    RXRVETN_Vetc_Code   AS Vet_Ben_Code 

    FROM FAISMGR.RXRVETN 
    WHERE RXRVETN_Term_Code_VA BETWEEN '201170' AND '201670' 
)RXR 

ON STU.Term_Code = RXR.Term_Code 
AND STU. PIDM  = RXR.PIDM 
+1

NVL(RXR.Vet_Ben_Code、0) – OldProgrammer

答えて

1

あなたはNVLを使用することができます。

NVL(col, 0) 

またはCOALESCE

COALESCE(col, 0) 
+0

ありがとうございました – Cdubois6

+0

@ Cdubois6 - 私は助けてくれることを嬉しく思います。 :-) – GurV

2

あなたはNVL()またはCOALESCE()のいずれかを使用することができます。

SELECT NVL(NULL, 0) from dual; 
SELECT COALESCE(NULL, 0) from dual; 

NVLそれは、第2のパラメータnullの場合、いずれかの非ヌル値を返すかであろう。

COALESCEは、複数のパラメータを許可し、パラメータリストの最初の非NULL値を評価します。

+0

ダウン投票で詳しく記入してください。 – gmiley

+1

デザインやスキームではなく、鉱山があなたのものに似ているかもしれませんが、私は答えの中にその機能を記述しました。私は似たような答えを下げる必要はないと思う。ダウンボートは、通常、間違った、またはそれ以外の場合は重大な回答がない場合に予約する必要があります。類似性のためではありません。しかし、何でも。 – gmiley

+0

あなたは私がそれを知らないと思いますか?とにかく、私は*機能の説明に*感謝します。 :-) – GurV

1

Oracleが次に使用する場合: デュアルからのSELECT NVL(NULL、0)。

SQLの場合は、次のようになります。 デュアルからのSELECT ISNULL(STU.Term_Code、0)。

+0

なぜ2つの独自関数の代わりに標準SQL 'COALESCE'を使用しないのですか? OracleとSQL Serverの両方(おそらく単なる* SQL *を意味する)とほぼ他のDBMSもそれをサポートしています。 – dnoeth

+0

良い点。 !!!実行計画を見ると、COALESCEの計画はやや複雑です。ストリーム集計演算子を追加して読み込み回数を増やすと最も顕著になります。複雑なものがなければ、COALESCEはISNULLと等しくなります。 [詳細については、このリンクをチェック](http://sqlmag.com/t-sql/coalesce-vs-isnull) –

+0

SQL Serverの 'ISNULL'と' COALESCE'の違いについて知っていますが、このクエリは複雑な:-) – dnoeth

関連する問題