2012-03-01 20 views
3

我CallHistory表,這些列:SELECT語句檢索什麼從來沒有發生過

CustomerId, TimeOfCall, CallResult 

和CallResult我可能有這樣的值: 「下的訂單」,「要求退貨」,「技術問題」, '詢問價格'等。

我想SELECT CustomerId FROM CallHistory WHERE客戶至少有一次「詢問價格」,但從來沒有「放置訂單」。

謝謝!

回答

2

我想你應該能夠用單一選擇不連接或子

做試試這個:

SELECT CustomerId 
FROM CallHistory 
GROUP BY CustomerId 
HAVING COUNT(CASE WHEN CallResult='Inquired about Pricing' THEN 1 ELSE NULL END) > 0 
    AND COUNT(CASE WHEN CallResult='Placed Order' THEN 1 ELSE NULL END) = 0 
+0

非常感謝。我非常喜歡這個解決方案。非常優雅,可以很容易地修改爲「詢問價格兩倍」等。 – Amarundo 2012-03-01 17:37:02

6
SELECT DISTINCT c.CustomerId 
    FROM CallHistory c 
    WHERE c.CallResult = 'inquired about Pricing' 
     AND NOT EXISTS(SELECT 1 
          FROM CallHistory c2 
          WHERE c2.CustomerId = c.CustomerId 
           AND c2.CallResult = 'Placed Order') 
+0

非常感謝你。 – Amarundo 2012-03-01 17:36:42

+1

@Amarundo:很高興幫助。請記住通過點擊旁邊的複選標記來接受您認爲最好的答案。 – 2012-03-01 17:39:56

+0

謝謝喬。我不知道要檢查最佳答案。所有的答案都很棒。很難選擇一個。我必須選擇一個對我來說更簡單,不一定是最好的。 – Amarundo 2012-03-05 17:05:39

1
SELECT CustomerId 
    FROM CallHistory 
WHERE CallResult = 'Inquired about Pricing' 
EXCEPT 
SELECT CustomerId 
    FROM CallHistory 
WHERE CallResult = 'Placed Order'; 
+0

非常感謝。 – Amarundo 2012-03-01 17:36:54

相關問題