更新NULL日期字段以匹配另一个日期字段值

时间:2014-10-07 17:00:17

标签: sql sql-update isnull

我正在尝试更新 DM_EVENT_T.date_ops_end 的NULL字段,以匹配 MAX(DM_REPORT_JOURNAL.date_report)中反映的日期:

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很陌生,所以对解决方案背后的方法或逻辑的任何见解都会非常感激!

1 个答案:

答案 0 :(得分:1)

最大值可以存储在临时变量中,可以使用UPDATE进行设置 如果这不是预期值,可能包含一些示例数据和所需输出,则可以对其进行修改。

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