db2 跳过/忽略SQL中CASE语句中的条件

8cdiaqws  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(221)

我有一个基于几个CASE条件进行查询的查询。我希望某个特定的CASE语句不执行任何操作,而是一起跳过该CASE。

select colA
case
when colB = 'P' then colC in (colD)
when colB = 'Q' then colC in (colE)
when colB = 'R' then do nothing

from table_A

基本上,我希望每当colB遇到值'R'时,它什么也不做,而是跳到table_A中的下一行。有什么方法可以做到这一点吗?如果有关系,这是在DB2数据库中,并将在SAS企业指南(版本8.3)中的PROC SQL过程中使用。

uz75evzq

uz75evzq1#

如果希望使用CASE表达式创建的变量为NULL,请在CASE表达式中使用相应的空值或缺失值。
也许您的意思是希望创建一个新的colB变量,使其具有现有colB变量的值,但该值不是P或Q?

select colA
     , case
         when colB = 'P' then colC 
         when colB = 'Q' then colD
         else colB
       end as new_colB
from table_A

如果不希望结果中包含COLB='R'的观测值,则使用WHERE排除这些观测值。

select colA
     , case
         when colB = 'P' then colC 
         when colB = 'Q' then colD
         else colB
       end as new_colB
from table_A
where colB ne 'R'

如果你真的在使用SAS,那么完全跳过SQL,只写SAS代码来做你想做的事情,这样你就可以有条件地执行语句了。

data want;
  set mylib.table_A;
  if colB='P' then do;
     * some other data step statements ;
  end;
run;

相关问题