2016-12-16 34 views
0

私はredshiftを使用していますが、日ごとに異なるものを数えようとしていますが、テーブル2のカウントがゼロのときは表示されません。どのようにカウントをゼロにすることができますか?SQLカウントで0を表示

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

テーブル間で右結合を使用していることに注意してください。つまり、2番目のテーブルに一致する日がない最初のテーブルの行は表示されません。 If you're new with SQL joins you can refer to this image that explains it.

結果に表示されるユニークな日数がすべて最初の(または左側の)テーブルに含まれている場合は、「右」から「左」の結合に切り替えます。

+0

両方のテーブルには0の日数があるので、この問題は解決しません。このクエリを変更して、両方のテーブルがゼロであってもその日が表示されるようにする必要があります。 – kadzu

関連する問題