2016-09-07 8 views
-3

日付の列に応じてIDフィールドを更新する必要があるテーブルがあります。日付に応じてIDの列を更新する

H_MEP_ID|_LoadDate     |_EndDate    |ID 
12312 |2015-04-19 12:14:52.733 |2016-06-16 17:19:56.613 |72 
12312 |2016-06-16 17:19:53.403 |NULL     |83 

表B表Bは、更新スクリプトの後のようになりますどのように

H_MEP_ID|MeasureDate|MeasureDateTime |ID 
12312 |2015-10-02 |2015-10-02 23:00 |NULL 
12312 |2015-11-01 |2015-11-01 23:00 |NULL 
12312 |2015-11-02 |2015-11-02 23:00 |NULL 
12312 |2016-06-16 |2016-06-16 23:00 |NULL 

H_MEP_ID|MeasureDate|MeasureDateTime |ID 
12312 |2015-10-02 |2015-10-02 23:00 |72 
12312 |2015-11-01 |2015-11-01 23:00 |72 
12312 |2015-11-02 |2015-11-02 23:00 |72 
12312 |2016-06-16 |2016-06-16 23:00 |83 

どのように進むべきかアドバイスしていますか?

表Bに111M行がありますが、どのようにしてMeasureDateフィールドのwhileループでクエリを分割できますか?

+0

この問題をご自身で解決してください。 –

+1

より具体的にする必要があります。私はどのように適切なIDが決定されて見つけることができません? Tbl_B_updated 72のID列の最初の3つの値はなぜ、第4の値は83ですか? –

+0

テーブルAではLoadDate for ID = 83が2016-06-16であり、結果としてMeasureDateが2015-11-03であるため、結果がそのように見える理由はわかりません。見た目だけでは、結果のIDは72と予想されます。私は何かを逃していますか? – Nebi

答えて

0
update b 
    set 
    b.id=a.id 
    from 
    tablea a 
    join 
    tableb b 
    on 
    b.H_MEP_ID=a.H_MEP_ID 
    and b.meaure_datetime between a.loaddate and isnull(a.enddate,getdate()) 
+0

ありがとう、このコードは私を助けた! – vasdan

+0

テーブルBには111Mの行がありますが、どのようにしてMeasureDateフィールドのwhileループでクエリを分割できますか?事前にお礼します – vasdan

+0

このリンクをクリックして質問を改善し、新しい質問をしてください.https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-パブリックフォーラム/ – TheGameiswar

関連する問題