的
我有一个包含列call_no
、status
和sub_staus
的表
例如:唱片就是这样。
call_no status sub_staus
123 2 null
123 79 null
123 null 119
231 5 null
231 null 78
我需要获取一个状态为79且sub_status为119
call_no
您可以使用聚合和having
:来完成此操作
select call_no
from t
group by call_no
having sum(case when status = 79 then 1 else 0 end) > 0 and
sum(case when sub_status = 119 then 1 else 0 end) > 0;
SELECT CALL_NO
FROM TABLE
GROUP BY CALL_NO
HAVING SUM(
CASE
WHEN STATUS = 79
THEN 1
ELSE 0
END) > 0
AND SUM(
CASE
WHEN SUB_STATUS = 119
THEN 1
ELSE 0
END) > 0;
我怀疑您想要最大值,但这只是猜测。如果您想要具有状态79和子状态119的呼叫,则使用SUM(case….)将适用,但使用最大值可能会导致当前处于状态79和个子状态119。
select call_no
from t
group by call_no
having max(status) = 79
and max(sub_status) = 119;