0

我想知道如何在 SQL 中进行查询,其中我提取了一些数据并给出了 row_numbers(由交易 id 分区)以及当我拉出一个对其执行了特定操作“AMEND”的项目时(例如,如果行2 记录有 AMEND 动作)然后我想看看第 3 行的动作是什么。

如果第 3 行操作是“更新”,那么我想要一个新字段在两者上都说“删除”,如果该交易没有第 3 行或第 3 行操作不是更新,那么我希望新字段说“保持”

这很容易做到吗?

谢谢

4

1 回答 1

0

您必须自引用该表,以便能够提取前一行数据

with cte as( select *
, rownumber() over by (partition by trade_id order by......) as seq 
from table )
select * from cte t1 
left join cte t2 on t1.seq= t2.seq + 1

可以说,您在 cte 中的字段名称被称为 A 和 B,因为您已经自我引用了该表。现在将生成的结果插入到临时表中。

然后,您可以根据上一行中的 ACTION 构造您的 CASE 语句:

  select 
 a.action 
, case when (b.action= 'Update' and a.action= 'amend') then 'REmove'
  else 'keep'
  end NEWField
from #temp
于 2013-10-23T17:42:16.410 回答