Skip/Ignore SQL CASE 语句中的条件

Skip/Ignore a condition in CASE statement in SQL

我有一个查询,我在其中根据几个 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 Enterprise Guide(版本 8.3)

中的 PROC SQL 过程中使用

如果您希望使用 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;