[英]Guidance needed regarding SQL query
我有下表,其中需要針對特定Prod_ID的最大Transaction_ID將Check_Status從“已完成”更新為“未完成”:
Tran_ID Prod_ID Check_Status
------- -------- ------------
107893 XA Completed
107892 XA Completed
107891 XA Completed
107890 XB Completed
107889 XB Completed
107888 YC Completed
107887 YC Completed
107886 YC Completed
107885 YC Completed
我的結果應顯示如下,即產品ID XA
的最大交易ID為107893,應更新為“未完成”。 其余的東西應該保持不變。 對於其他產品ID XB
和XC
同樣如此。
Tran_ID Prod_ID Check_Status
------- -------- ------------
107893 XA Not-Completed
107892 XA Completed
107891 XA Completed
107890 XB Not-Completed
107889 XB Completed
107888 YC Not-Completed
107887 YC Completed
107886 YC Completed
107885 YC Completed
您可以為此使用CTE:
;with cte as
(
select tran_id, prod_id,
row_number() over(partition by prod_id order by tran_id desc) rn,
check_status
from yourtable
)
update cte
set check_status = 'Not-Completed'
where rn = 1
UPDATE Transactions set
Check_Status= 'Not completed'
where Tran_ID IN (
Select MAX(Tran_ID) as Tran_ID from
Transactions Group by Prod_ID)
UPDATE tablename t1
SET t1.Check_Status = 'Not-Completed'
WHERE t1.TranId IN
(
SELECT Max(Tran_ID)
FROM Tablename t2
GROUP BY Prod_ID
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.