0

私はこのテーブルを持っています

ここに画像の説明を入力

orderId = 12 の最大 (最近の) endDate を更新したい。

私はこのようにしてみました

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

しかし、これは準拠していません。何が正しいですか? ありがとう

編集申し訳ありませんが、私は間違って尋ねました。私が望むのは、Most RECENT(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 に答える