簡體   English   中英

有關SQL查詢的指導

[英]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 XBXC同樣如此。

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

參見帶有演示的SQL Fiddle

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM