0

我有这张桌子

在此处输入图像描述

我想更新 orderId = 12 的最大(最近)结束日期。

我试过这样

UPDATE Order_Status
    SET endTime = @startTime
    WHERE @orderID IN (
    SELECT OrderID
    FROM Order_Status
    GROUP BY @OrderID
    Having max (@startDate)

但这甚至不符合要求,请问是什么?谢谢

编辑对不起,我问错了,我想要的是更新最近的结尾(starteTime)

我是说 。我想要的是更新具有最近 StartTime 的行中的 endTime 值

4

1 回答 1

1

请试试:

;with T as(
    select *, ROW_NUMBER() over (order by StartTime desc) RNum from Order_Status where OrderID=12
)
update top(1) T set endTime=@startTime

对于多个 OrderID,请尝试

;with T as(
select *, ROW_NUMBER() over (partition by OrderID order by StartTime desc) RNum from Order_Status
)
update T set endTime=@startTime where RNum=1
于 2013-05-14T07:37:25.400 回答