oracle中多行合併成列

2021-08-29 23:56:33 字數 1087 閱讀 8763

今天碰到乙個問題,a表與b表一對多,b表與c表一對多的關係,a表的主鍵是b表的外來鍵,b表的主鍵是c表的外來鍵。

現在要查,a表所對應的c表的記錄

兩種方案:

一、以c表的需要字段作為主要的方面去查a表所對應的記錄

select

td.devid,

td.devname,

cai.title

from

core_attachment_info cai,

taizhang_devices td,

taizhang_places tp,

taizhang_devicedocument tdd

where

td.devid = tdd.devid

and tp.placeid = td.placeid

and cai.billid = tdd.docid

但是這樣出現了乙個問題,a表記錄的那個查出欄位會重複

二、以a表為主

select

dev.devid,dev.devname,dev.devtypeid,dev.placeid,dev.pwlevel,

[color=red]wmsys.wm_concat[/color](att.title) title,

[color=red]wmsys.wm_concat[/color](att.attid) attid,

[color=red]wmsys.wm_concat[/color](att.filename) filename

from taizhang_devices dev

left join

taizhang_devicedocument doc

on dev.devid=doc.devid

left join core_attachment_info att

on doc.docid=att.billid

group by dev.devid ,dev.devname,dev.devtypeid,dev.placeid,dev.pwlevel

oracle中可以合同行為列的函式。

但是其只有oracle 10g才支援

oracle多行合併成一行

在mysql有關鍵字group concat提供了類似的功能,在oracle中類似功能關鍵字是wm concat.比如我有如下查詢資料 但是我希望能夠顯示成一行查詢出來,結果圖如下 關鍵sql 形如 select t.sglcheckid,wm concat t.salemodulename fro...

oracle 將多行合併成一行

使用者id 使用者名稱 角色 001 admin 管理員 002 betty 教師 001 admin 教師 003 cole 學生 可以看到使用者admin有兩個角色 管理員和教師 也就是使用者和角色是多對多的關係 我們現在的需求是,將這兩個合併在一塊,由兩行資料變成一行資料 也就是在形式上將多對...

oracle多行記錄合併成一行。

需要做個報表,把多行記錄,合併成一行。簡單記錄下。注 以下內容為虛構資料,可能會出現不太對的現象,邏輯上是對的。現實中的比這複雜。原始表 部門人數 銷售30 售後20行政8 轉成 銷售8人,售後20人,行政8人。考慮到資料庫版本的問題,目前用的是oracle 11g,12g的時候不再有wmsys.w...