繁体   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