これはこのフォーラムの最初の投稿ですので、わかりやすかったり質問の形式が正しくないと謝っています。SQLで2つのテーブルを結合しようとすると問題が発生する
| Date | Year_Part | Month_part |
31-01-2016 2016 1
29-02-2016 2016 2
31-03-2016 2016 3
30-04-2016 2016 4
... ... ...
このテーブルには、単に最初の列は、各月の最終日である2016年の一年を経る:
は、私は、次の表、TABLE_MONTHSを持っています。
| Date | Year_Part | Month_part | Cumulative_Saved |
03-01-2016 2016 1 50
07-03-2016 2016 3 150
25-03-2016 2016 3 275
14-07-2016 2016 7 400
... ... ...
このテーブルには、私は私の貯蓄銀行口座にいくらかのお金を入れている各日付と片付け量を示しています
は、私はまた、別のテーブル、TABLE_SAVINGSを持っています。
私は何を後にしていますが、これらの2つのテーブルを結合している、結果のテーブルは次のようになりますよう:
| Date | Year_Part | Month_part | Cumulative_Saved |
31-01-2016 2016 1 50
29-02-2016 2016 2 50
31-03-2016 2016 3 275
30-04-2016 2016 4 275
31-05-2016 2016 5 275
30-06-2016 2016 6 275
31-07-2016 2016 7 400
... ... ...
基本的には、代わりにちょうど私が私にお金を堆積する際の正確な日付を持っていることの表私の貯蓄口座にどれくらいの金額があるかを月ごとに記録してくれます。
私の問題は、私が望む結果のためにこれら2つのテーブルを結合するロジックを理解することが苦労していることです。この作業を取得しようとしているの多くの試みの後、私が思い付くために管理している「最高」は、
SELECT
A.*,
MAX(B.Cumulative_Saved) OVER
(PARTITION BY B.Month_part ORDER BY B.Month_part ASC)
FROM
TABLE_MONTHS A
LEFT JOIN
TABLE_SAVINGS B
ON A.[Date] <= B.[Date]
をされているが、これはまたから、後の日付にTABLE_MONTHSから以前の日付に参加しますTABLE_SAVINGSでは、TABLE_MONTHSの日付ごとに複数の日付の複数の行が表示されます。
また、Cumulative_Savedフィールドが増えた場合(私のデータではそうではありません)、月の終わりに最も近いデータを持つ行を選択するとは限りません私の最初のテーブルからの日付。
私は本当にこれらに苦しんでいて、答えを感謝しています、私は実際にこれを動作させるための方法を見ることができません。
これが不明な場合は教えてください。私は何を意味するのかを明確にしようとします。
私はNetezzaとSSMSにアクセスできるので、いずれかの回答が最適です。
ありがとうございました。
完璧、ありがとうゴードン! – EskiJoe