欢迎投稿

今日深度:

listagg()行转列函数,

listagg()行转列函数,


--基础数据
DROP TABLE "ZYH_TEST";
CREATE TABLE "ZYH_TEST" (
  "ID" NUMBER(19) NOT NULL ,
  "NAME" VARCHAR2(255 BYTE) ,
  "CREATETIME" DATE ,
  "SCORE" NUMBER ,
  "CLASSID" VARCHAR2(255 BYTE) 
)

INSERT INTO "ZYH_TEST" VALUES ('1', 'allen', TO_DATE('2019-01-14 17:41:09', 'SYYYY-MM-DD HH24:MI:SS'), '98.5', '1');
INSERT INTO "ZYH_TEST" VALUES ('2', 'lee', TO_DATE('2019-01-14 17:41:37', 'SYYYY-MM-DD HH24:MI:SS'), '88.5', '1');
INSERT INTO "ZYH_TEST" VALUES ('3', 'me', TO_DATE('2019-01-14 17:41:52', 'SYYYY-MM-DD HH24:MI:SS'), '73', '1');
INSERT INTO "ZYH_TEST" VALUES ('4', 'let', TO_DATE('2019-01-14 17:42:03', 'SYYYY-MM-DD HH24:MI:SS'), '88', '1');
INSERT INTO "ZYH_TEST" VALUES ('5', 'met', TO_DATE('2019-01-14 17:42:16', 'SYYYY-MM-DD HH24:MI:SS'), '99', '1');
INSERT INTO "ZYH_TEST" VALUES ('6', 'ali', TO_DATE('2019-01-14 17:42:30', 'SYYYY-MM-DD HH24:MI:SS'), '66', '1');
INSERT INTO "ZYH_TEST" VALUES ('7', 'avicii', TO_DATE('2019-01-15 12:41:09', 'SYYYY-MM-DD HH24:MI:SS'), '73', '2');
INSERT INTO "ZYH_TEST" VALUES ('8', 'martin', TO_DATE('2019-01-15 12:41:37', 'SYYYY-MM-DD HH24:MI:SS'), '76', '2');
INSERT INTO "ZYH_TEST" VALUES ('9', 'ajx', TO_DATE('2019-01-15 12:41:52', 'SYYYY-MM-DD HH24:MI:SS'), '91', '2');
INSERT INTO "ZYH_TEST" VALUES ('10', 'atlan', TO_DATE('2019-01-15 12:42:03', 'SYYYY-MM-DD HH24:MI:SS'), '60', '3');
INSERT INTO "ZYH_TEST" VALUES ('11', 'bill', TO_DATE('2019-01-15 12:42:16', 'SYYYY-MM-DD HH24:MI:SS'), '78', '3');
INSERT INTO "ZYH_TEST" VALUES ('12', 'bite', TO_DATE('2019-01-15 12:42:30', 'SYYYY-MM-DD HH24:MI:SS'), '89', '3');

示例

--listagg()函数:是行转列函数,用于实现对列值的拼接(多行中的指定列字段,拼接成新的一列)。
--格式
listagg(列字段,'分隔符')within group(order by 排序字段)
--分数大于70的学生
select listagg(name,',')within group(order by score) 合并后的姓名 from zyh_test  WHERE score > 70;

--每个班级分数大于70的学生
select classid 班级,listagg(name,',')within group(order by score) 合并后的姓名 from zyh_test  WHERE score > 70 GROUP BY classid;

--列转行函数listagg()结合分析函数over()
select name 姓名,score 分数,classid 班级,listagg(name,',')within group(order by score) over (partition by classid) 合并后的姓名 from zyh_test ORDER BY classid,score;

www.htsjk.Com true http://www.htsjk.com/teradata/33627.html NewsArticle listagg()行转列函数, --基础数据 DROP TABLE "ZYH_TEST" ; CREATE TABLE "ZYH_TEST" ( "ID" NUMBER ( 19 ) NOT NULL , "NAME" VARCHAR2 ( 255 BYTE ) , "CREATETIME" DATE , "SCORE" NUMBER , "CLASSID" VARCHAR2 ( 255 BYTE ) ) INSERT INTO "ZY...
相关文章
    暂无相关文章
评论暂时关闭