根据以前的记录更新列

席德

我有一个带有列C1,C2,C3,C4,C5,C6和Count的表。我必须使用C1,C2,C3,C4,C5的顺序对记录进行排序。对于第一个记录,Count将为0,然后如果下一行的C1,C2,C3,C4,C5的值与上一行相同,那么我必须通过添加+1来更新Count列。所以这就是我所期望的:表:

C1   C2    C3    C4    C5    C6     Count
-------------------------------------------
1    A     X     X1    AA    123     0
1    A     X     X1    AA    121     1
1    A     X     X1    AA    118     2
1    A     X     X1    AA    117     3
2    B     X     X2    AA    234     0
8    A     Y     X3    AA    298     0
8    A     Y     X3    AA    800     1

我正在使用Oracle DB。我用Cursor和Order by编写了一个PL SQL块,然后在BULK COLLECT中使用了光标,并与以前的记录进行了比较,遍历了每条记录。但是,Count列将使用意外的记录进行更新,并且花费的时间比预期的要多得多,该表具有约40万条记录。我无法在此处键入代码,因为实际代码在客户端计算机中。任何帮助都将受到高度赞赏。可以使用PL / SQL或简单SQL。DB是Oracle。

戈登·利诺夫(Gordon Linoff)

我相信你想要row_number()

select t.*,
       (row_number() over (partition by c1, c2, c3, c4, c5 order by c6) - 1
       ) as "Count"
from t;

您可以用来merge将其放在update语句中。或者,如果您真的想要一个update

update t
    set count = (select count(*)
                 from t t2
                 where t2.col1 = t.col1 and t2.col2 = t.col2 and t2.col3 = t.col3 and
                       t2.col4 = t.col4 and t.col5 = t2.col5 and
                       t2.col6 < t.col6
                );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据日期用以前的记录更新列

根据以前的 ID 获取记录 - Laravel

根据以前的更新动态更新用户界面

如何根据以前的值更新MongoDB文档?

根据以前的查询向查询添加列

r,根据以下记录的值更新时间戳

根据以前的评分创建顺序排名

如何根据以前的状态在熊猫数据框中创建一列?

根据以前的值将列添加到pandas数据框

SQL Server:是否可以根据以前更新的行值来更新行,而无需使用游标?

如何根据以前的过滤结果简化流搜索?

如何根据以前下载的信息获取图像列表?

如何根据以前的连续行过滤出行?

根据以前的选择显示选择选项

如何隐藏ngFor的div并根据以前的ngFor显示

我正在尝试根据以前的分区提供排名

如何使ValidateSet根据以前的参数显示不同的数据

如何根据以前的值显示选中的单选按钮?

将两列合并为一列,并根据以前的列成员身份添加带有标识符的列

根据Postgresql中的条件获取以前的记录

根据不同列中的顺序更新现有记录

有没有一种方法可以根据以前发生的列x中的值来过滤数据帧?

Codeigniter批处理更新以前的记录状态

根据新记录和重复记录更新数据库中的列

使用以前的记录值更新最新记录

SQL:根据以下行数据更新值

根据以前的值设置正则表达式编号范围

使用bash重命名文件,以根据以前的出现增加数字值

如何根据以前和将来的值填充缺失或空值?

TOP 榜单

热门标签

归档