用于获取表中 3 个值计数的 SQL 查询

  • 本文关键字:SQL 查询 获取 用于 sql
  • 更新时间 :
  • 英文 :


我正在寻找一个直接选择查询来获取以下条件的计数,而不是在我的 pl/sql 存储过程中使用 if else 条件。

if (A > 0 & B > 0 & C >0){
return count=3
} else if (A <0 & B<0 & C >0 || A<0 & B>0 & C<0 || A >0 & B <0 & C <0 ) 
{ 
return count = 1
} else if (A>0 & B>0 & C <0 || A>0 & B<0 & C>0 || A <0 & B >0 & C >0 ) 
{ 
return count = 2
} else (A<0 & B<0 & C <0){
return count = 0
}

您可以在以下情况下使用案例:

select case when   (A > 0 AND  B > 0 AND C >0) THEN 3 
when ( (A <0 AND  B<0 AND  C >0 ) OR ( A<0 AND B>0 AND C<0) OR  (A >0 AND B <0 AND C <0 )) THEN 1 
when ( (A >0 AND  B>0 AND  C<0 ) OR ( A>0 AND B<0 AND C>0) OR  (A <0 AND B >0 AND C >0 )) THEN 2
ELSE 0 
END as my_result
from my_table  

嗯。 如果我正确遵循逻辑,我会做:

select ( (case when A > 0 then 1 else 0 end) +
(case when B > 0 then 1 else 0 end) +
(case when C > 0 then 1 else 0 end)
) as cnt
from t;

最新更新