ORACLE排列序号问题
现有数据表如下:日期|人员2015-01-01|A2015-01-10|A2015-01-15|A2015-02-01|B2015-02-10|B2015-02-15|B...
现有数据表如下:
日期 | 人员
2015-01-01 | A
2015-01-10 | A
2015-01-15 | A
2015-02-01 | B
2015-02-10 | B
2015-02-15 | B
2015-02-20 | B
2015-02-01 | A
2015-02-10 | A
2015-02-15 | A
现需要根据人员和日期,添加一列排序列
效果如下:
日期 | 人员 | 序号
2015-01-01 | A | 1
2015-01-10 | A | 2
2015-01-15 | A | 3
2015-02-01 | B | 1
2015-02-10 | B | 2
2015-02-15 | B | 3
2015-02-20 | B | 4
2015-02-01 | A | 1
2015-02-10 | A | 2
2015-02-15 | A | 3
请高手不吝赐教,能否用SQL来实现。谢谢! 展开
日期 | 人员
2015-01-01 | A
2015-01-10 | A
2015-01-15 | A
2015-02-01 | B
2015-02-10 | B
2015-02-15 | B
2015-02-20 | B
2015-02-01 | A
2015-02-10 | A
2015-02-15 | A
现需要根据人员和日期,添加一列排序列
效果如下:
日期 | 人员 | 序号
2015-01-01 | A | 1
2015-01-10 | A | 2
2015-01-15 | A | 3
2015-02-01 | B | 1
2015-02-10 | B | 2
2015-02-15 | B | 3
2015-02-20 | B | 4
2015-02-01 | A | 1
2015-02-10 | A | 2
2015-02-15 | A | 3
请高手不吝赐教,能否用SQL来实现。谢谢! 展开
展开全部
这个很简单的:
如下:
CREATE TABLE TEMP_AVG_SCORE
(T_DATA DATE,
T_NAME VARCHAR2(10)
) ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-01','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-10','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-15','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-01','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-10','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-15','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-20','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-01','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-10','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-15','YYYY-MM-DD'),'A') ;
COMMIT;
SELECT T.T_DATA,
T.T_NAME,
ROW_NUMBER() OVER(PARTITION BY TO_CHAR(T.T_DATA, 'MM'), T.T_NAME ORDER BY T.T_DATA) RN
FROM TEMP_AVG_SCORE T ;
如下:
CREATE TABLE TEMP_AVG_SCORE
(T_DATA DATE,
T_NAME VARCHAR2(10)
) ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-01','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-10','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-15','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-01','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-10','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-15','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-20','YYYY-MM-DD'),'B') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-01','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-10','YYYY-MM-DD'),'A') ;
INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-15','YYYY-MM-DD'),'A') ;
COMMIT;
SELECT T.T_DATA,
T.T_NAME,
ROW_NUMBER() OVER(PARTITION BY TO_CHAR(T.T_DATA, 'MM'), T.T_NAME ORDER BY T.T_DATA) RN
FROM TEMP_AVG_SCORE T ;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
TableDI
2024-07-18 广告
2024-07-18 广告
作为上海悉息信息科技有限公司的工作人员,对于Excel的自动汇总功能有一定了解。在Excel中,实现自动汇总到一个表通常可以通过以下几种方式:1. **使用数据透视表**:选择需要汇总的数据范围,点击“插入”->“数据透视表”,然后根据需要...
点击进入详情页
本回答由TableDI提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询