row_number()over(partition by 字段 order by 字段)ID,修改重复行的字段值。

时间:2021-11-11 17:29:55

案例分析:

现在要查询一个表单里面的运费结果,但是他还有分录,为了显示分录,必须把表头显示出来,问题是,他要查询运费的合计,

但是这样就会导致重复行也加进去了,这样显然数据不准,为此,可以把重复的行设置为0.

方法:

row_number()over(partition by 字段 order by 字段)ID

相当于把一个字段来分组,然后对于这个字段而言,相当于单独字段ID,分别设置值为1,2,3,4,5,排序,有点类似rownum,我们可以把ID字段不等于1的设置为0,这样就不会

重复了。

先创建一个表d,并且插入数据。

create table d
( a1 int ,
b1 int,
c1 int ,
d1 int
)
insert into d values(2,4,6,7);
insert into d values(2,4,6,7);
insert into d values(2,4,6,7);
insert into d values(2,4,6,7);
insert into d values(2,4,6,7);

第二部,创建一个表e,用来存储d的数据

create table e
( a1 int ,
b1 int,
c1 int ,
d1 int,
d2 int
)

insert into e
select a,b,c,d,row_number()over(partition by b order by b)ID
from d

得出结果:

row_number()over(partition by 字段 order by 字段)ID,修改重复行的字段值。

更新数据:

'

得出结果:

row_number()over(partition by 字段 order by 字段)ID,修改重复行的字段值。