WHERE子句中的CASE语句:Teradata

kan*_*n m 0 sql data-warehouse 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

Dav*_*itz 5

where      exc_ind <> 1 
        or mrktng_pckge_typ_cd NOT IN ('a','b','c','d') 
Run Code Online (Sandbox Code Playgroud)

如果exc_ind可以为NULL -

where      coalesce (exc_ind,-1) <> 1 
        or mrktng_pckge_typ_cd NOT IN ('a','b','c','d') 
Run Code Online (Sandbox Code Playgroud)

出于演示目的:

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
Run Code Online (Sandbox Code Playgroud)