プロジェクトの予測予算に基づいて「将来の月」を取得するためのクエリを作成しています。返信先の行よりも多くの行を接続する
基本的に予測を行う予定の最終日(START_DATE)と今後の予定(END_DATE)を取っていますので、その間にすべてを数か月間で入力する必要があります。
私は「CONNECT BY」が多くの助けになることがわかった研究をいくつか行っています。それをSimplyfying
は、クエリは次のようになります。
SELECT TO_CHAR (ADD_MONTHS (START_DATE, LEVEL - 1), 'fmMonth')
FROM (SELECT PROJECT_ID, FORECAST_VALUE, START_DATE, END_DATE
FROM PROJECTS
WHERE PROJECT_ID = 001)
CONNECT BY LEVEL <=
MONTHS_BETWEEN (TRUNC (END_DATE, 'MM'),
TRUNC (START_DATE, 'MM')
)
* +1
一つのプロジェクトを選択するときに、クエリが正常に動作しますいくつかまたはすべてのプロジェクト/行を選択するときに、しかし、クエリがより多くの行以外を分解し、返します期待される。
ソースデータは、このようなものを見て:私は予想よりトン以上ヶ月と年を取得するしかし、私が見ることを期待する何
PROJECT_ID | FORECAST_VALUE | START_DATE | END_DATE
-----------+----------------+------------+-----------
001 | 100 | 2017-01-01 | 2017-03-01
002 | 200 | 2017-01-01 | 2017-05-01
003 | 200 | 2017-10-01 | 2018-01-01
この
PROJECT_ID | FORECAST_VALUE | FORECAST_YEAR | FORECAST_MONTH
-----------+----------------+---------------+-----------
001 | 100 | 2017 | JANUARY
001 | 100 | 2017 | FEBRUARY
001 | 100 | 2017 | MARCH
002 | 200 | 2017 | JANUARY
002 | 200 | 2017 | FEBRUARY
002 | 200 | 2017 | MARCH
002 | 200 | 2017 | APRIL
002 | 200 | 2017 | MAY
003 | 200 | 2017 | OCTOBER
003 | 200 | 2017 | NOVEMBER
003 | 200 | 2017 | DECEMBER
003 | 200 | 2018 | JANUARY
ようなものになるだろう。
どうすればこの問題を解決できますか?
ありがとうございます!
は、単純なデータの高密度化問題のようですね。ソースデータと希望する結果のサンプルを常に投稿してください。簡単に言えば。ここに私が持っているものがあります。ここに私が欲しい出力があります。私が書いた質問です。 –
@NicholasKrasnovありがとう!ちょうど私の質問にそれを加えました。 – dkg
および実行中のOracleのバージョン –