微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在结果中添加一列,显示按年份分组的序号

如何解决在结果中添加一列,显示按年份分组的序号

这些 sql 能够添加具有递增数字(1、2、3、4 等)的列

select year,quarter,uploaddate,wagecount,SUM(1) 
OVER (ORDER BY year,uploaddate) as SequentialNumbers from SAMPLE_DATA
order by year,uploaddate

select your_query.*,rownum
  from (select year,wagecount 
          from SAMPLE_DATA) your_query

结果如下

季度 上传日期 工资计数 序列号
2021 1 01-JAN-21 2 1
2021 1 02-JAN-21 2 2
2021 1 03-JAN-21 1 3
2021 1 04-JAN-21 5 4

无论如何要采取下一个大胆的步骤,让每年都有自己的序列号。换句话说,结果最终会像这样

类似的东西

季度 上传日期 工资计数 序列号
2019 1 01-JAN-21 2 1
2019 1 02-JAN-21 2 2
2019 1 03-JAN-21 1 3
2019 1 04-JAN-21 5 4
2020 1 01-JAN-20 2 1
2020 1 02-JAN-20 2 2
2020 1 03-JAN-20 1 3
2020 1 04-JAN-20 5 4
2021 1 01-JAN-21 2 1
2021 1 02-JAN-21 2 2
2021 1 03-JAN-21 1 3
2021 1 04-JAN-21 5 4

样本数据如下:

CREATE TABLE SAMPLE_DATA (
    YEAR VARCHAR2(4) NULL,QUARTER NUMBER(1,0) NULL,UPLOADDATE DATE NULL,WAGECOUNT NUMBER(10,0) NULL
);

Insert into SAMPLE_DATA (YEAR,QUARTER,UPLOADDATE,WAGECOUNT) values ('2019','1',to_date('27-MAR-19','DD-MON-RR'),5);
Insert into SAMPLE_DATA (YEAR,to_date('28-MAR-19',8493);
Insert into SAMPLE_DATA (YEAR,to_date('29-MAR-19',15070);
Insert into SAMPLE_DATA (YEAR,to_date('30-MAR-19',1244);
Insert into SAMPLE_DATA (YEAR,WAGECOUNT) values ('2020',to_date('03-JAN-20',0);
Insert into SAMPLE_DATA (YEAR,to_date('05-JAN-20',2);
Insert into SAMPLE_DATA (YEAR,to_date('06-JAN-20',3);
Insert into SAMPLE_DATA (YEAR,to_date('07-JAN-20',6);
Insert into SAMPLE_DATA (YEAR,WAGECOUNT) values ('2021','2',to_date('21-APR-21',59);
Insert into SAMPLE_DATA (YEAR,to_date('22-APR-21',10);
Insert into SAMPLE_DATA (YEAR,to_date('23-APR-21',16);
Insert into SAMPLE_DATA (YEAR,to_date('24-APR-21',1);

解决方法

您需要for (var i = 0; i < example.length - 1; i++) {解析函数:

row_number

结果:

select year,quarter,uploaddate,wagecount,row_number()
         OVER (partition by year
               ORDER BY quarter,uploaddate) as SequentialNumbers 
from SAMPLE_DATA
order by year,uploaddate;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。