2016-01-14 62 views
-4

的我有statuscall_no,一臺過濾表,並sub_staus如何編寫一個查詢根據一系列值

對於前:記錄是這樣的。

call_no status sub_staus 
123  2  null 
123  79  null 
123  null 119 
231  5  null 
231  null 78 

我需要獲取一個call_no狀態爲和sub_status是

+0

歡迎來到Stack Overflow。不建議您在不顯示您的努力和研究的情況下提出解決方案的問題,包括您嘗試過什麼,嘗試達到期望輸出時遇到了什麼問題。如果您在其他地方沒有找到解決此問題的方法,請發佈格式良好的問題以獲得快速而乾淨的答案,並可能對您的問題進行提問 – simsim

回答

0

爲此,您可以通過聚集和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; 
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; 
+0

爲何提供已提供的解決方案(忽略格式差異)? –

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; 
相關問題