現在のバージョンでは、そこにないデータを表示することはできません。これは、将来のバージョンでは問題にならない可能性があります。
日付関連のデータの場合、キー期間を強制的に表示してから、データをそれにLOJすることができます。静的テーブルを作成したり、SQLコマンドを記述したりできるかどうかに依存するため、最も単純ではありません。
データベースに静的な日付テーブルを配置できる場合は、それが最も簡単な方法である可能性があります。毎月1日のエントリが1つあるテーブルで十分な場合があります。このテーブルからデータへのリンクを追加します-静的テーブルをLEFTテーブルとして使用すると、データが存在しない月であっても、月の列が含まれます。正しいリンクを見つけるのは問題かもしれません。
私が行う最も簡単な方法は、SQLコマンドを使用してレポートをフィードし、CTE(共通テーブル要素)、シードテーブル、および日付計算を使用して駆動テーブルの完全な日付スパンを取得し、次に実際の日付計算を使用することです。結合を照会します。そこから、新しい日付要素として使用する追加の(派生および駆動)列が作成されます。
初めて設定するのは面倒ですが、コードを入手して、必要に応じて再利用できます。
私は次のようなことをします:
With
MOS as ( -- CTE for # of months I plan on covering - NEGATIVELY from today's date
Select -12 as Offset from Dual UNION ALL
Select -11 from Dual UNION ALL
Select -10 from Dual UNION ALL
Select -9 from Dual UNION ALL
Select -8 from Dual UNION ALL
Select -7 from Dual UNION ALL
Select -6 from Dual UNION ALL
Select -5 from Dual UNION ALL
Select -4 from Dual UNION ALL
Select -3 from Dual UNION ALL
Select -2 from Dual UNION ALL
Select -1 from Dual
)
, ChartDates as ( -- gives the 1st day of the month, for the 'n' months above
Select TRUNC( ADD_MONTHS(sysdate, MOS.offset ), 'MONTH' ) ChartMonth
from MOS
)
-- Join to the real query
Select CD.ChartMonth, YQ.*
from ChartDates CD
Left Outer Join (YourQuery) YQ
on CD.ChartMonth = YQ.QueryMonth
結合条件として使用するには、データから同等の「月の1日」を生成する方法が必要になります。
そこから、すべてをSQLとして貼り付け、新しいフィールドChartMonthを運転日として使用します。