これはいかがですか?
SELECT SHORT_DESC =
CASE
WHEN MAIL_CODE1 = 'XXX' THEN ' '
WHEN MAIL_CODE1 <> 'RNC' THEN SHORT_DESC
ELSE 'Request No Contact'
END
FROM (SELECT 1 dummy) dummy
LEFT JOIN TMS_MAILING_1 m ON m.MAIL_CODE1 = 'XXX'--${MailCode}
GROUP BY SHORT_DESC, MAIL_CODE1;
条件の検証順序は、最初と最後まで行くから始まり、CASE
文であり覚えておいてください。
最初の有効な条件が返されます。この場合はTRUE
です。
常に平等であることを確認してから平等でないことを確認する必要があります。
また、クエリロジックがちょっと変わっているようです。あなたは以下のコードを使用して、ちょうどクエリがあなたの入力に基づいて振る舞うかを確認するために@PARAM
変数の値を変更することができ、テスト目的のために
DECLARE @PARAM NVARCHAR(MAX) = 'XXX'--${MailCode}
SELECT
SHORT_DESC = CASE
WHEN MAIL_CODE1 = 'XXX'
THEN ''
WHEN MAIL_CODE1 <> 'RNC'
THEN SHORT_DESC
ELSE 'Request No Contact'
END
FROM TMS_MAILING_1
WHERE MAIL_CODE1 = @PARAM
:私のようなクエリを書き換えたいです。
DECLARE @PARAM NVARCHAR(MAX) = 'XXX'--${MailCode}
SELECT
SHORT_DESC = CASE
WHEN MAIL_CODE1 = 'XXX'
THEN ''
WHEN MAIL_CODE1 <> 'RNC'
THEN 'SHORT_DESC'
ELSE 'Request No Contact'
END
FROM (SELECT @PARAM AS MAIL_CODE1) X
WHERE MAIL_CODE1 = @PARAM
私は意味 'RNC''「XXX''は'と等しくない」、第1の条件が真であり、これは、単純な論理である – Lamak
が指定された値を返します。 MAIL_CODE1 <> 'RNC'は、MAIL_CODE1 = 'XXX'の場合、最初の条件が満たされたことを意味します... –
これは表示されますが、表示する必要がある値を返すにはどうすればよいですか。あなたのおかげで助けてください – user2831724