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;
我有一个查询,我在其中根据几个 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;