orcale 多行多列合并为多行一列

前言:

小编最近有一个需求就是一个字段里面存多张表的id,然后界面需要联查显示客户需要的对应的内容。经过一系列的百度搜索实践,最终发现了下面这个可以实现我想要的结果。

内容:

查询出来的结果:

orcale 多行多列合并为多行一列_第1张图片

 

 

第一种:

使用CONCAT(ch1, ch2) 函数,但是这个只适用于有两个参数的。而我的是多张表,不能使用。

SELECT CONCAT(ch1, ch2) FROM t

第二种:

使用“||”  或链接,这样就可以将查询出来的多个字段链接到一块。例如:

sql语句:

SELECT
	buc.COMPANY_NAME,
-- 	gp.*,
	gw.LICENSE_PLATE_NUMBER ,	
	s.id|| b.id ||c.id ||r.id||p.id
		
FROM
	ACC_BUSINESS_USABLE_CHANGE buc
	LEFT JOIN GP_DETAILS gp ON buc.RELEVANCE_BILLS_ID = gp.id  
	LEFT JOIN GP_WBILL gw ON  buc.RELEVANCE_BILLS_ID =  gw.id
	LEFT JOIN SM_SETTLE s  ON buc.RELEVANCE_BILLS_ID=s.id
	LEFT JOIN SM_SETTLE b  ON buc.RELEVANCE_BILLS_ID=b.id
	LEFT JOIN SM_TRANSPORT_CAR c  ON buc.RELEVANCE_BILLS_ID=c.id
	LEFT JOIN SM_PORT_RAILWAY r ON buc.RELEVANCE_BILLS_ID=r.id
	LEFT JOIN SM_SPORT_PORT p ON buc.RELEVANCE_BILLS_ID=p.id
WHERE buc.RELEVANCE_BILLS_ID ='4062201901250001006'
or buc.RELEVANCE_BILLS_ID='4486201904090000007'
or buc.RELEVANCE_BILLS_ID ='4065201811190000004'
or buc.RELEVANCE_BILLS_ID ='4487201811270001001'
or buc.RELEVANCE_BILLS_ID ='4486201902260000061'
or buc.RELEVANCE_BILLS_ID ='4495201901090002'
or buc.RELEVANCE_BILLS_ID ='4496201905213003'
or buc.RELEVANCE_BILLS_ID ='4496201812270001'

orcale 多行多列合并为多行一列_第2张图片

这样的效果还是不能达到我们想要的效果,然后我们使用as 将标红的字段别名更改为我们需要的。

SELECT
	buc.COMPANY_NAME,
-- 	gp.*,
	gw.LICENSE_PLATE_NUMBER ,	
		(s.id|| b.id ||c.id ||r.id||p.id) as pid
		
FROM
	ACC_BUSINESS_USABLE_CHANGE buc
	LEFT JOIN GP_DETAILS gp ON buc.RELEVANCE_BILLS_ID = gp.id  
	LEFT JOIN GP_WBILL gw ON  buc.RELEVANCE_BILLS_ID =  gw.id
	LEFT JOIN SM_SETTLE s  ON buc.RELEVANCE_BILLS_ID=s.id
	LEFT JOIN SM_SETTLE b  ON buc.RELEVANCE_BILLS_ID=b.id
	LEFT JOIN SM_TRANSPORT_CAR c  ON buc.RELEVANCE_BILLS_ID=c.id
	LEFT JOIN SM_PORT_RAILWAY r ON buc.RELEVANCE_BILLS_ID=r.id
	LEFT JOIN SM_SPORT_PORT p ON buc.RELEVANCE_BILLS_ID=p.id
WHERE buc.RELEVANCE_BILLS_ID ='4062201901250001006'
or buc.RELEVANCE_BILLS_ID='4486201904090000007'
or buc.RELEVANCE_BILLS_ID ='4065201811190000004'
or buc.RELEVANCE_BILLS_ID ='4487201811270001001'
or buc.RELEVANCE_BILLS_ID ='4486201902260000061'
or buc.RELEVANCE_BILLS_ID ='4495201901090002'
or buc.RELEVANCE_BILLS_ID ='4496201905213003'
or buc.RELEVANCE_BILLS_ID ='4496201812270001'

效果如下:

orcale 多行多列合并为多行一列_第3张图片

你可能感兴趣的:(数据库设计,oracle)