SQL分组序号,求高手帮助
我要写一个sql实现图片中的最后一列的效果
根据前三列做group by,当提货地点+成品货权+发票抬头相同的时候生成“汇总号”相同,下一组则加1
我用ROW_NUMBER () OVER 无法实现
求高手帮助
[解决办法]
应是用dense_rank()实现.
create table net
(提货地点 varchar(20),成品货权 varchar(10),发票抬头 varchar(10),
物料编号 varchar(20),数量 int,单位 varchar(5),价格 int)
insert into net
select '济南成品库','1110','','ASRRM0001240K',3,'件',1300 union all
select '济南成品库','1110','','ASRRM0002240K',1,'件',1000 union all
select '济南成品库','1110','东天','ASRRM0001240K',2,'件',650 union all
select '济南成品库','1110','东天','ASRRM0002240K',2,'件',1000 union all
select '济南成品库','1110','昊海','ASRRM0001240K',1,'件',650 union all
select '济南成品库','1110','昊海','ASRRM0002240K',1,'件',1000
with t as
(select *,
dense_rank() over(order by 提货地点+成品货权+发票抬头) 'rn'
from net)
select 提货地点,成品货权,发票抬头,物料编号,数量,单位,价格,
replicate('0',2-len(rn))+rtrim(rn) '汇总号'
from t
/*
提货地点 成品货权 发票抬头 物料编号 数量 单位 价格 汇总号
-------------------- ---------- ---------- -------------------- ----------- ----- ----------- -----------
济南成品库 1110 ASRRM0001240K 3 件 1300 01
济南成品库 1110 ASRRM0002240K 1 件 1000 01
济南成品库 1110 东天 ASRRM0001240K 2 件 650 02
济南成品库 1110 东天 ASRRM0002240K 2 件 1000 02
济南成品库 1110 昊海 ASRRM0001240K 1 件 650 03
济南成品库 1110 昊海 ASRRM0002240K 1 件 1000 03
(6 row(s) affected)
*/