0

我必须在已经存在的数据库中创建一个新列,以跟踪某种类型的出现次数。这是一个更清楚的例子:

id | eqid | etcd | this would be my new column
-------------------------
1  | 4   | abc  | 1
2  | 3   | def  | 1
3  | 1   | ghi  | 1
4  | 4   | jkl  | 2
5  | 3   | mno  | 2
6  | 4   | pqr  | 3

我正在尝试使此列能够获取特定值的所有 EQID 并获得它们的位置。例如:在上面的示例中,假设您想要获得第一个等于 4 的 EQID,并且在此示例中它的 ETCD 等于“abc”,通过一个按钮成为第二个等于 4 的 EQID,第二个EQID 成为第一个,我会增加 ETCD 等于“abc”的那个,而减少 ETCD 等于“jkl”的那个。我试过到处寻找答案,但我没有找到可以帮助我的答案。谢谢你的帮助。顺便说一句,必须保存此列,它不能是临时列或类似的东西。

4

1 回答 1

0

使用窗口函数 Row_Number()。在此处查看演示

select id, eqid ,etcd 
     ,  row_number() over( partition by  eqid order by id) "This is new column"      
   from sample_data
   order by id;  

您应该研究并熟悉Window Functions和那里的文档参考。

于 2021-09-01T23:27:47.607 回答