我正在尝试更新创建一个查询,该查询将按日期和时间对数据进行排序,找到最新的记录,然后更新记录中的另一个字段,将其标记为如此。
让我的生活更加艰难,时间和数据是两个独立的字段,时间也是一个字符串。
所以这是我到目前为止所拥有的,
UPDATE server.ESCC_HWAY_ASSETS_GULLIES_N
set CURRENT_REC = 'Y'
From server.ESCC_HWAY_ASSETS_GULLIES_N A
inner join (
SELECT GULLY_ID, Max([DATE]) AS MaxDate, MAX([TIME]) AS MaxTime
FROM server.ESCC_HWAY_ASSETS_GULLIES_N B
GROUP BY GULLY_ID, [DATE] ) B
on A.GULLY_ID = B.GULLY_ID and A.[DATE] = B.MaxDate and A.[TIME] = B.MaxTime
这导致数据按时间和日期排序,但它会更新它找到的所有字段,除了有两个条目的日期。然后它只更新最新的记录。
我正在测试一条记录 - B47605,它在此排队器上给出以下结果
SELECT GULLY_ID, Max([DATE]) AS MaxDate, MAX([TIME]) AS MaxTime
FROM ESMAPADMIN.ESCC_HWAY_ASSETS_GULLIES_N B
WHERE GULLY_ID = 'B47605'
GROUP BY GULLY_ID, [DATE]
Gully_ID MaxDate MaxTime
B47605 2008-03-12 00:00:00.000 09:02:29
B47605 2008-09-19 00:00:00.000 09:51:14
B47605 2009-02-16 00:00:00.000 11:18:28
B47605 2009-08-21 00:00:00.000 12:34:45
B47605 2010-03-16 00:00:00.000 09:22:26
B47605 2010-08-25 00:00:00.000 11:19:55
B47605 2011-03-07 00:00:00.000 12:19:56
B47605 2012-05-02 00:00:00.000 20:57:54
我想要的结果是只返回最新的记录,所以 -
Gully_ID MaxDate MaxTime
B47605 2012-05-02 00:00:00.000 20:57:54
我不知道如何从我所在的地方到我需要去的地方,所以任何帮助将不胜感激。