如何将Oracle查询结果多行数据转成一行平铺显示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Oracle查询结果多行数据转成一行平铺显示?相关的知识,希望对你有一定的参考价值。

如何将Oracle查询结果多行数据转成一行平铺显示,如下图上面多行显示的是plsql查出来的结果,要实现下面的显示一行的效果。systemcode字段是主表,其它的是子表

参考技术A group by systemcode分组,然后每个字段就max就可以了追问

具体一点,请写出sql参考一下

追答

systemcode,max(字段1),max(字段2)。。。。from table group by systemcode
大约就这样,因为字段1和字段2中其他地方都是null,所以max自然就会找到那个最大值,也就是有值的地方,自然也就在一行了。
你现在这个结构应该是case when以后得到的吧,直接在case when的外面套一个max,后面加上分组就可以了

本回答被提问者采纳
参考技术B oracle数据库里面如何把一行数据转化为列显示 可用union all来实现。如test表中数据如下:现要将id为3的一条按列显示,可用如下语句:select to_char(id) str from test where id=3 参考技术C oracle数据库里面如何把一行数据转化为列显示 可用union all来实现。如test表中数据如下:现要将id为3的一条按列显示,可用如下语句:select to_char(id) str from test where id=3 参考技术D oracle数据库里面如何把一行数据转化为列显示 可用union all来实现。如test表中数据如下:现要将id为3的一条按列显示,可用如下语句:select to_char(id) str from test where id=3 第5个回答  2022-06-29 oracle数据库里面如何把一行数据转化为列显示 可用union all来实现。如test表中数据如下:现要将id为3的一条按列显示,可用如下语句:select to_char(id) str from test where id=3

SQL SERVER2000将多行查询结果拼接到一行数据

 

处理前的查询结果如上图:

 

通过借助SQL变量的定义

DECLARE @Scope varchar(1000)
DECLARE @Num int 
SET @Scope=\'\'
SET   @Num = 1   
SELECT @Scope=@Scope+convert(varchar(8),@Num)+\'\'+DescScope+ DescOper+\';\', @Num = @Num+1 From fuel_contractQualityNew Where ContractID=\'012009000100\'
SELECT ContractID,@Scope FROM fuel_contractQualityNew Where ContractID=\'012009000100\' GROUP BY ContractID

 

 

实现了一下效果:

 

 
 //创建拼接描述SQL的函数
CREATE FUNCTION dbo.f_str(@contractID varchar(50))
RETURNS VARCHAR(8000)
AS
BEGIN
        DECLARE @Scope varchar(1000)
        DECLARE @Num int 
        SET @Scope=\'\'
        SET   @Num = 1   
        SELECT @Scope=@Scope+convert(varchar(8),@Num)+\'\'+DescScope+ DescOper+\';\', @Num = @Num+1 From fuel_contractQualityNew where ContractID= @contractID
        RETURN @Scope
END
GO

 

以上是关于如何将Oracle查询结果多行数据转成一行平铺显示?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 结果集行转列,多行数据转为一行显示,第一列内容拼接生成字段名

Oracle sql使用子查询将多行结果分组为一行

求助,oracle多行数据合并成一行

求助,oracle多行数据合并成一行

如何将多行组合在一行中,oracle

关于Oracle,在一行中个别字段多行显示。