この質問の複雑さを前もってお詫びしますが、これは私が扱っていることです。私はそれに500万レコード以上のテーブルを持っています。 500万件以上のレコードのうち、Column1と呼ぶもののユニークな値は約185,000です。 Column1はvarcharフィールドです。私は、日付フィールドを '2005-01-01'から現在の日付までの日付フィールドであるColumn2と呼びます。レコードごとに、私はColumn3と呼ぶフロートフィールドがあります。 Column3は、その特定のレコードの現在のレートを保持します。それから私はColumn4と呼ぶ異なるフロートフィールドがあります。このフィールドは、Column3の値がColumn2から取得している前月のものと等しい値に設定する必要がある最後のレートフィールドを保持します。トリッキーな部分は、私がColumn1のユニークな値ごとにこれを行う必要があるということです。私はそれが理にかなったことを願う今はColumn4のすべてのデータがnullですが、私はあなたが以下のように見えるようにしたいと思います。例えば別の列の一意の値ごとに、SQL設定列が前月の別の列と等しくなりました
:
Column1 Column2 Column3 Column4
Record1 2005-01-01 6.25 6.25
Record2 2005-01-01 5.625 5.625
Record3 2005-01-01 4.75 4.75
Record1 2005-02-01 6.5 6.25
Record2 2005-02-01 5.625 5.625
Record3 2005-02-01 4.75 4.75
Record1 2005-03-01 6.75 6.5
Record2 2005-03-01 5.625 5.625
Record3 2005-03-01 5 4.75
あなたが見ることができるように、レートがRECORD2と同じように月ごとに同じままの場合があります。しかし、Record1のように頻繁に変更されることもあります。それから、Record3のように一度だけ変わる時があります。あなたの提案をお知らせし、事前に感謝してください。
これはおそらく、あなたが思うよりも簡単です。あなたがいくつかの詳細を提供できるなら、我々は助けることができます。ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
Column4の最初の3つの値はNULLでなければならない記録。たとえば、ウィンドウ関数を使用すると、あなたのタスクはかなり簡単です。 'ROW_NUMBER()'。 –
@John Cowles_1つの 'column2'について:常に' yyyy-MM-01'ですか?そうでない場合、 'column2'が' 2005-03-31'または '2005-03-30'、または' 2005-01-02'のとき '' column4'はどうでしょうか? –