问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 多分组,行转列问题

发布网友 发布时间:2022-04-11 22:33

我来回答

1个回答

热心网友 时间:2022-04-12 00:03

先建立一个存储过程实现分组
CREATE OR REPLACE TYPE t_string_agg AS OBJECT
(
g_string VARCHAR2(32767),

STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
RETURN NUMBER,

MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
value IN VARCHAR2 )
RETURN NUMBER,

MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER,

MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
ctx2 IN t_string_agg)
RETURN NUMBER
);
/
SHOW ERRORS

CREATE OR REPLACE TYPE BODY t_string_agg IS
STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
RETURN NUMBER IS
BEGIN
sctx := t_string_agg(NULL);
RETURN ODCIConst.Success;
END;

MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
value IN VARCHAR2 )
RETURN NUMBER IS
BEGIN
SELF.g_string := self.g_string || ',' || value;
RETURN ODCIConst.Success;
END;

MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER IS
BEGIN
returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');
RETURN ODCIConst.Success;
END;

MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
ctx2 IN t_string_agg)
RETURN NUMBER IS
BEGIN
SELF.g_string := SELF.g_string || ';' || ctx2.g_string;
RETURN ODCIConst.Success;
END;
END;
/
SHOW ERRORS

CREATE OR REPLACE FUNCTION string_agg (p_input VARCHAR2)
RETURN VARCHAR2
PARALLEL_ENABLE AGGREGATE USING t_string_agg;
/
SHOW ERRORS

然后

select 姓名, string_agg( 年度||' '||科目||' '||成绩 ) 数据 from 表名 group by 姓名;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王者荣耀:哪些英雄不是很强但是很快乐?桑启上榜,第一名将出荣耀... 声卡麦克风哪个牌子比较好 Telefunken R-F-T AK47简介 一本贱民小说 男主角很漂亮机甲玩的很好 替主人考试得了全帝国第三... 汽车模型推荐- amiibo 塞尔达传说 荒野之息 林克(弓) 2024 下半年必玩的 6 款 Switch 游戏! Maxfactory Figma 涂装完成版 模型手办-塞尔达传说-林克手办 MaxFactory《塞尔达传说:黄昏公主》Figma 林克 再版 - Rakuten 请问南京工程学院四级不过能拿到学位证么 南京工程学院2023年成人高考招生简章 oracle怎样将多列转换成一行? Oracle中如何删除某个用户下的所有数据呢 ... oracle数据块的大小影响效率吗? oracle数据块通过什么表示这个块空闲 oracle一个数据块能否存放多个表的数据? oracle 一个 数据块有多大 cocos2dx 能开发什么游戏 cocos2dx 为什么要将资源拷到debug.win32根目录下才有用 cocos2d-x和cocos studio有什么区别 Cocos2D-X:用VS2010的话应该安装哪个版本的cocos? cocos2dx 用什么工具开发 vs2010创建Cocos2dx的工程 怎么没找到Resource文件夹 cocos2dx中hello.world项目创建成功,如何添加cocos2d-x模块道VS2010 cocos2d-x环境搭建,vs2010,生成解决方案时出错,error MSB3073,具体如下,求指导 您好 对于Cocos2dx网上下载的源码如何导入到vs2010这个问题您可以帮忙解答一下吗 小女感激感激 VS2010创建cocos2dx项目的时候出现无法打开CCStdC.h和cocos2d.h文件。 新手刚接触cocos2d-x,在网上下载的游戏的源码怎么加入到VS2010中运行?在VS中已经配置好了cocos2d-x。 如何配置cocos2dx在vs2010的环境 如何实现支持REST的Java Business Services resteasy 搭建webservice 返回List类型数据如何实现? oracle行转列中怎么把列名不同的字段统一到一列中? Oracle中怎么修改列名? 如何给列重命名? SQL Oracle查询语句中重命名的列在WHERE中无效? sql中重命名列怎么命名? ORACLE中,如何使用UPDATE修改重复列 unhandled exception in ex_draw.exe(mfc42d.dll):0xc0000005 Access violation access violation at adress 007346c4怎么处理 access violation at address ooffad44 in module'recoef.dll read of adress 00000004 安装CAD时出现致命错误UnhandledAccessViolationReading0x0000Exceptionat4043b9h怎么办 开机出现 Access Violation At Address HTTP Status 403 - Access to the requested resource has been denied HTTP Status 403 为什么打开网页有以下提示??? TOMCAT 进不了manager页面 JAVa 如何返回HTTP status 403 网页打不开,出现HTTP Status 404 - / 什么原因那 SSH整合问题:HTTP Status 404 type Status report description The requested resource is not avai... 这是什么意思啊!是土豆网 JAVA 调试程序的时候出现The requested resource is not available,怎么处理