2016-12-16 69 views
0

我使用紅移並試圖按天計數不同的事物,但當表2中的計數爲零時,它不顯示。我如何讓它顯示計數零?你使用了正確的在SQL計數中顯示零數

SELECT TO_CHAR(date1,'dd') AS day, 
     COUNT(*) as Volume,sum(CASE WHEN status = 'ANSWERED' THEN 1 ELSE 0 END)as ANSWERED , t2.Volume AS TRANSFERS 
FROM table1 t1 
    RIGHT JOIN (SELECT TO_CHAR(date2,'dd') AS day, 
        COUNT(*) as Volume 
       FROM table2 
       WHERE TO_CHAR(date2,'yyyy_MM') IN (SELECT DISTINCT TO_CHAR(date2,'yyyy_MM') 
               FROM table2 
               WHERE date2 BETWEEN DATE ('2016-11-01') AND DATE ('2016-12-30')) 
       AND type = 'Active' 
       GROUP BY day) t2 ON TO_CHAR(date1,'dd') = day 
WHERE TO_CHAR(date1,'yyyy_MM') IN (SELECT DISTINCT TO_CHAR(date1,'yyyy_MM') 
              FROM table1 
              WHERE date1 BETWEEN DATE ('2016-11-01') AND DATE ('2016-12-30')) 
GROUP BY 1,4 
ORDER BY 1 
+0

有,你試過一個外連接? –

+0

不相關,但是:在「IN」的子查詢中'distinct'沒有用處 –

回答

0

注意表之間的連接。這意味着第一個表中第二個表中沒有匹配日期的任何行都不會顯示。 If you're new with SQL joins you can refer to this image that explains it.

如果你的第一個(或左表)中包含了所有的獨特的天數應在結果中顯示出來,只需切換「右」到「左」加入。

+0

這兩個表都有可能爲0的日子,所以這不能解決問題。我需要更改此查詢,以便即使兩個表都爲零時,也會顯示一天。 – kadzu