2016-09-07 92 views
-3

我有一個表,我需要根據日期列更新ID字段。更新ID列取決於日期

表A

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

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 

表B應該如何看待像更新腳本之後。

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行,我怎麼能在MeasurementDate字段上用while循環分割查詢?

+0

請給我們展示一下自己解決這個問題的最佳嘗試。 –

+1

你需要更具體。我無法找到合適的ID是如何確定的?爲什麼Tbl_B_updated 72中的ID列中的前三個值是第83個值? –

+0

我不知道爲什麼結果應該看起來像這樣,因爲在表A中,ID = 83的LoadDate是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