Sql 如何编写查询以根据值范围筛选表

Sql 如何编写查询以根据值范围筛选表,sql,oracle,Sql,Oracle,我有一个表,其中包含列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、子状态为119的呼叫号。您可以使用聚合和: 我怀疑您想要最大值,但这只是一个猜测。如果您需要状态为79和子状态

我有一个表,其中包含列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、子状态为119的呼叫号。您可以使用聚合和:


我怀疑您想要最大值,但这只是一个猜测。如果您需要状态为79和子状态为119的呼叫,请使用SUMcase。。。。将适用,但使用最大值可能会给您当前处于状态79和子状态119的呼叫

select call_no
from t
group by call_no
having max(status) = 79
   and max(sub_status) = 119;

为什么要提供忽略格式差异的解决方案?欢迎使用堆栈溢出。不推荐在没有显示您的努力和研究的情况下请求解决方案的问题,包括您尝试过什么,在尝试达到所需输出时您遇到了什么。如果你发现这个问题在其他地方没有得到解决,可以发布一个格式良好的问题,以获得一个快速而清晰的答案,也许还可以增加对你问题的投票
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;
select call_no
from t
group by call_no
having max(status) = 79
   and max(sub_status) = 119;