SQL根据表中的值返回行
我有一张包含费用的桌子。每个费用都有一个状态。当用户更改费用的数量时,原始行标记为准备删除(状态更改为准备删除),并使用用户刚刚输入的数量创建新行。然后,该新行的状态为“已支付”。主管需要验证费用更改,一旦更改一次,原始费用行的状态将更新为已删除。我想做的是当一笔费用被修改时。如果原始费用的状态为“准备删除”,而新费用的状态为“已支付”,则返回“准备删除”。当原始费用状态被删除且新费用状态已支付时,返回已支付的费用。我试过使用SQL根据表中的值返回行,sql,sql-server,Sql,Sql Server,我有一张包含费用的桌子。每个费用都有一个状态。当用户更改费用的数量时,原始行标记为准备删除(状态更改为准备删除),并使用用户刚刚输入的数量创建新行。然后,该新行的状态为“已支付”。主管需要验证费用更改,一旦更改一次,原始费用行的状态将更新为已删除。我想做的是当一笔费用被修改时。如果原始费用的状态为“准备删除”,而新费用的状态为“已支付”,则返回“准备删除”。当原始费用状态被删除且新费用状态已支付时,返回已支付的费用。我试过使用 select ISNULL(b.StatusId, c.Status
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;
样本数据和预期输出在这里会很有帮助。请提供它们好吗?字符串常量应该用单引号引起来。此外,样本数据和预期结果也会有所帮助。