繁体   English   中英

WHERE子句中的CASE语句:Teradata

[英]CASE statement in WHERE clause : Teradata

下面粘贴的是一个示例SQL代码,该代码在where子句中使用case语句,但是它抛出语法错误,提示“在mrktng_pckge_typ_cd和NOT关键字之间期待END之类的关键字。

CASE WHEN exc_ind=1 THEN mrktng_pckge_typ_cd NOT IN ('a','b','c','d') ELSE NULL END

where      exc_ind <> 1 
        or mrktng_pckge_typ_cd NOT IN ('a','b','c','d') 

如果exc_ind可以为NULL-

where      coalesce (exc_ind,-1) <> 1 
        or mrktng_pckge_typ_cd NOT IN ('a','b','c','d') 

出于演示目的:

where case when coalesce (exc_ind,-1) <> 1 or mrktng_pckge_typ_cd NOT IN ('a','b','c','d') then 1 else 0 end = 1

您可能需要这样做。 我给了不同的表名,但您可以这样做:

Declare @condition as int = 1
SELECT *
FROM mstCity
WHERE( (1=@condition and Name IN (SELECT AliasCity.Name From mstCity AliasCity WHERE AliasCity.Name NOT IN ('USA','UK') )) OR 
       (2=@condition AND Name IN (SELECT AliasCity.Name From mstCity AliasCity  ))
     )

根据您的查询更新的答案应如下所示:

WHERE ( ( exc_ind= 1 AND mrktng_pckge_typ_cd NOT IN ('a','b','c','d')) OR 
    ( exc_ind <> 1 AND 1=1 )
  )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM