2014-10-07 154 views
0

我想更新我的NULL字段的DM_EVENT_T.date_ops_end匹配的日期反映在MAX(DM_REPORT_JOURNAL.date_report)更新NULL日期字段匹配另一個日期字段值

SELECT DM_EVENT_T.event_id, 
     DM_EVENT_T.date_ops_end, 
     MAX(DM_REPORT_JOURNAL.date_report) AS [Final Report Date] 
FROM DM_EVENT_T INNER JOIN 
     DM_REPORT_JOURNAL ON DM_EVENT_T.event_id = DM_REPORT_JOURNAL.event_id 
WHERE (DM_REPORT_JOURNAL.entity_type = 'Daily Operations') AND (DM_EVENT_T.date_ops_end IS NULL) 
GROUP BY 
     DM_EVENT_T.date_ops_end, DM_EVENT_T.event_id 

我我對SQL很陌生,因此對於解決方案背後的方法或邏輯的深入瞭解將非常感謝!

+0

[較短的示例](http://sscce.org/)將有所幫助。 你想在date_ops_end爲空時返回一個不同的值,或者你是否真的想將date_ops_end設置爲一個值? – 2014-10-07 17:48:40

+0

嗨傑里米 - 我試圖將date_ops_end設置爲與MAX相同的值(DM_REPORT_JOURNAL.date_report)。我會盡量做一個簡短的例子! – RoedaiOnline 2014-10-07 18:11:21

回答

1

最大值可以存儲在一個臨時變量中,可以使用更新 進行設置如果這不是預期值,可能有一些示例數據和所需的輸出,可以修改此值。

DECLARE @maxVal datetime 

SELECT @maxVal = MAX(DM_REPORT_JOURNAL.date_report) 
FROM DM_EVENT_T INNER JOIN 
     DM_REPORT_JOURNAL 
     ON DM_EVENT_T.event_id = DM_REPORT_JOURNAL.event_id 
WHERE (DM_REPORT_JOURNAL.entity_type = 'Daily Operations') AND (DM_EVENT_T.date_ops_end IS NULL) 
GROUP BY 
     DM_EVENT_T.date_ops_end, DM_EVENT_T.event_id 

UPDATE DM_EVENT_T 
set date_ops_end= @maxVal 
where date_ops_end IS NULL 
+0

我收到錯誤:「隱式從數據類型datetime到int的轉換是不被允許的。使用CONVERT函數來運行這個查詢」這部分腳本:「SELECT @maxVal = MAX(DM_REPORT_JOURNAL.date_report)」... ....我需要添加這樣的地方嗎?:CONVERT(DATETIME,'2013-01-01 00:00:00',102) – RoedaiOnline 2014-10-07 20:20:13

+0

更改@maxVal類型datetime – radar 2014-10-07 20:23:05