2013-05-08 60 views
-1

嗨,有人能幫助我嗎?SQL從IN()中的每個項目獲取結果

我有此查詢:

SELECT DISTINCT(CAMPAIGN), 
    count(STATUS) 
FROM  
C18_101 INNER JOIN CLIENT_10 ON C18_101.ID = CLIENT_10.ID 
WHERE CAMPAIGN in ('Batch 1','Batch 2','Batch 3','Batch 4','Batch 5') AND STATUS = 'Pending' 
GROUP BY CAMPAIGN,STATUS 

結果看起來是這樣的:

Batch 2  241 

Batch 3  321 

Batch 4  575 

Batch 5  429 

我還需要BATCH1結果,即使是沒有的。

+0

查詢似乎沒問題。檢查是否實際上有'Batch 1'的數據,其狀態爲pending – 2013-05-08 12:57:00

+0

@ARS:即使沒有記錄,他也希望'Batch 1'。 – 2013-05-08 12:58:28

+0

@TimSchmelter:哦,我錯過了那一點..我想我的背痛止痛藥是影響我的濃度:) – 2013-05-08 12:59:34

回答

3
SELECT 
    X.CAMPAIGN, 
    count(STATUS) 
FROM 
    (SELECT DISTINCT CAMPAIGN FROM C18_101) X 
    LEFT JOIN 
    CLIENT_10 C ON X.ID = C.ID AND C.STATUS = 'Pending' 
GROUP BY 
    X.CAMPAIGN 
  1. 你要麼GROUP BY或聚合,而不是兩個
  2. 您不同的前JOIN,以確保您的計數是每個廣告活動的正確
  3. 你真的需要一個活動過濾器?如果是這樣,請添加到派生表X
+0

謝謝我非常滿意幫助,但是活動在表中CLIENT_10現在我得到一些消息加入 – Jacobs 2013-05-08 13:26:03

+0

@ user2358570:喜歡什麼? – gbn 2013-05-08 13:28:08

+0

SELECT CLIENT_NLE001.SIZO_CAMPAIGN_ID__C, 計數(X.lib_status) FROM (SELECT DISTINCT CLIENT_NLE001.SIZO_CAMPAIGN_ID__C FROM C18_NLE001)X INNER JOIN CLIENT_NLE001 ON X.INDICE = CLIENT_NLE001.INDICE AND C.STATUS = '未接來電規則' GROUP BY X.SIZO_CAMPAIGN_ID__C 的迴應是: [FreeTDS] [SQL Server]無法綁定多部分標識符「CLIENT_NLE001.SIZO_CAMPAIGN_ID__C」。 [FreeTDS] [SQL Server]無效的列名稱'INDICE'。 [FreeTDS] [SQL Server]無法綁定多部分標識符「C.STATUS」。 [FreeTDS] [SQL Server]無效的列名'lib_status'。 – Jacobs 2013-05-08 14:34:54

3
SELECT CAMPAIGN, 
    count(STATUS) 
FROM C18_101 
LEFT JOIN CLIENT_10 ON C18_101.ID = CLIENT_10.ID AND STATUS = 'Pending' 
WHERE CAMPAIGN in ('Batch 1','Batch 2','Batch 3','Batch 4','Batch 5') 
GROUP BY CAMPAIGN 
+1

這仍然是錯誤的。 DISTINCT是預行,而不是每列。並且你不能COUNT和GROUP BY – gbn 2013-05-08 13:06:48

+1

@gbn謝謝,不專心專注於加入 – bummi 2013-05-08 13:09:29