>我有这样的表格:
+------+
|Status|
+------+
|2 |
+------+
|1 |
+------+
|2 |
+------+
|2 |
+------+
|2 |
+------+
在此表中,名为状态的列有一个不同的值,即 1,因此它应该向我返回一个值为 PENDING 的单列状态,如果所有状态值均为 2,那么它应该返回具有一个值的单列状态
已完成输出应如下所示
+------+
|Status |
+------ +
|Pending|
+-------+
检查不同状态(不包括 1(的数量不大于 0:
SELECT CASE WHEN COUNT(*) > 0 THEN 'PENDING' ELSE 'COMPLETED' END AS 'Status' FROM (
SELECT DISTINCT status FROM yourtable WHERE status != 1
) a;
SELECT CASE WHEN COUNT(*) >1 THEN 'PENDING' ELSE 'COMPLETED' END FROM
(
SELECT Status FROM TABLENAME GROUP BY Status
)Z
尝试上面的查询。
希望这会有所帮助。
由于您已经给出了数据集中唯一的两个可能值是 1 和 2,因此您可以运行以下查询来获得所需的结果。
注意:我在这里假设 2s 表示已完成的值,1s 表示待处理的值。因此,所有行的总和应等于"no"。的行 x 2 如果全部完成。否则,这意味着存在不匹配的值(即 1(
SELECT
CASE
WHEN count(status) * 2 = SUM(status) THEN 'COMPLETED'
ELSE 'PENDING'
END AS status
FROM my_table;
我想
下面的查询可能会对您有所帮助:-
select
CASE WHEN count(*) = 0 then 'COMPLETED'
ELSE 'PENDING' END
from testing where status in ('1');