SQL:函数LISTAGG用法(20181217)

题目:如图是个人工作经历的一张表:图1,需要得到每个人的职业发展线路,按照入职公司时间的顺序:

SQL:函数LISTAGG用法(20181217)_第1张图片 图1

 

SQL:函数LISTAGG用法(20181217)_第2张图片 图2

 

解答:使用ORACLE的LISTAGG函数可以一步搞定,代码如下:

DROP TABLE TEST;
COMMIT;

CREATE TABLE TEST (NAME VARCHAR2(200),ENTRY_DATE DATE,COMPANY VARCHAR2(200));
COMMIT;

INSERT INTO TEST VALUES('王强',date'2008-1-1','电信');
INSERT INTO TEST VALUES('王强',date'2009-1-1','移动');
INSERT INTO TEST VALUES('王强',date'2010-1-1','联通');
INSERT INTO TEST VALUES('李四',date'2008-1-1','电网');
INSERT INTO TEST VALUES('李四',date'2009-1-1','财政局');
INSERT INTO TEST VALUES('张三',date'2012-12-1','腾讯');
INSERT INTO TEST VALUES('张三',date'2013-12-1','阿里');
INSERT INTO TEST VALUES('张三',date'2014-12-1','美团');
INSERT INTO TEST VALUES('张三',date'2015-12-1','饿了么');
COMMIT;

SELECT * FROM TEST;

SELECT A.NAME,LISTAGG(A.COMPANY,'->') WITHIN GROUP (ORDER BY A.ENTRY_DATE) FROM TEST A GROUP BY A.NAME;

 

你可能感兴趣的:(每日一练)