過去 10 日間の売上データを選択しようとしており、売上がなかった 0 の日付を含めます。
そのために、デュアルとレベルごとの接続を使用して実験していますが、日付が一致しない理由がわかりません。クエリは失敗します。
基本的な作業クエリは次のとおりです。
SELECT
current_date - (LEVEL - 1)
,(LEVEL - 1) as result
FROM Dual CONNECT BY Level <= 10
order by result desc
そして結果:
Current_date-(LEVEL-1) RESULT
13-MAR-15 9
14-MAR-15 8
15-MAR-15 7
16-MAR-15 6
17-MAR-15 5
18-MAR-15 4
19-MAR-15 3
20-MAR-15 2
21-MAR-15 1
22-MAR-15 0
これでうまくいくと思いました。必要な日付が得られたので、サブクエリを追加して売上を取得することができました (結合について考えましたが、クエリのレベルで結合する方法が明確ではありませんでした) ):
SELECT
current_date - (LEVEL - 1)
,(select count(1) from sales where for_date=(current_date - (LEVEL - 1))) as sale_volume
,(LEVEL - 1) as result
FROM Dual CONNECT BY Level <= 10
order by result desc
ただし、売上があることがわかっている日でも、常に0が返されます。
Current_date-(LEVEL-1) SALE_VOLUME RESULT
13-MAR-15 0 9
14-MAR-15 0 8
15-MAR-15 0 7
16-MAR-15 0 6
17-MAR-15 0 5
18-MAR-15 0 4
19-MAR-15 0 3
20-MAR-15 0 2
21-MAR-15 0 1
22-MAR-15 0 0