簡體   English   中英

SQL返回基於表中值的行

[英]SQL return row based on a value in the table

我有一個包含費用的表。 每個費用都有一個狀態。 當用戶更改費用數量時,原始行將標記為“准備刪除”(狀態更改為“准備刪除”),並使用用戶剛輸入的數量創建新行。 然后,此新行的狀態為“已付費”。 主管需要驗證費用更改,一旦更改一次,原始費用行的狀態將更新為“已刪除”。 我要做的是在修改費用后..如果原始費用的狀態為“准備刪除”,而新的費用狀態為“已付費”,請返回“准備刪除”。 當原始費用狀態為“已刪除”而新費用狀態為“已付費”時,返回已付費項。 我試過使用

select ISNULL(b.StatusId, c.StatusId) id
from  (
  select *
  from  FeeItem 
  where Status = Paid) b

left join (
  select *
  from  FeeItem 
  where Status = Ready For Delete) c
on b.FormId = c.FormId

但這是錯誤的。 非常感謝您為我指出正確的方向。

謝謝 :)

嘗試這個:

Select *
From (Select 
    t.*,
    Row_number() over (partition by formid 
         order by Case status
           when 'ready for delete' then 1
           when 'paid' then 2 else 3 end) rn
From feeitem t) t
Where rn = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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