簡體   English   中英

在Where子句SQL中使用Case

[英]use Case in Where Clause SQL

嗨,做這個簡短。

當條件滿足時我只需要列。 如果條件不滿足,那么我可以繼續運行我的查詢而不將該列作為驗證。

需要的條件。

REFERENCE TABLE - TABLE_A
inside TABLE_A there is PARAMETER_NAME AND PARAMETER_VALUE
REQUIRED: PARAMETER_NAME= 'SMS_SEND'
PARAMETER_VALUE = 'TRUE'

用於驗證的欄目表_無效_STAT --->欄目

IF PARAMETER_NAME= 'SMS_SEND' and PARAMETER_VALUE = 'TRUE'
THEN I NEED TO CHECK INVALID_STAT IF ITS EQUAL TO 'Y'
ELSE
I DONT NEED TO VALIDATE INVALID_STAT AT ALL



WHERE (CASE
           WHEN 1 = (SELECT DECODE (PARAMETER_VALUE, 'FALSE', 1, 2)
                       FROM TABLE_A
                      WHERE PARAMETER_NAME = 'SMS_SEND')
           THEN
              INVALID_STAT
           ELSE
              'Y'
        END) = 'Y'

根據你的評論,這將得到你所要求的。

但是,我懷疑這是你需要的。 請按照上述評論的要求更新您的問題。 如果這確實回答了您的問題,請接受它作為答案並關閉問題。

我希望真正的要求是將外部聯接中的以下查詢包裝到更大的查詢(您尚未提供)以及合並以處理可能的無行方案。


select 
  case
    when PARAMETER_VALUE = 'FALSE' THEN 'Y'
    else ''
  end as SMS_Send_Ind
from Table_A
where PARAMETER_Name = 'SMS_SEND'
;

如果表中沒有帶Parameter_name ='SMS_SEND'的記錄,則查詢將不返回任何行。 否則,它將是Y或空白,由Table_A中帶有parameter_name ='SMS_SEND'的記錄數決定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM