Plsql中将行按列输出

将一下表的记录:
TRADE_DATE ,BATCH_NO, FLAG, ORG
19900901 1 D 借机构1
19900901 1 D 借机构2
19900901 1 C 贷机构1
19900901 1 C 贷机构2

按BATCH_NO“批量号”输出成如下形式。

TRADE_DATE ,BATCH_NO, D_ORA1 D_ORA2 C_ORA1 C_ORA2
19900901 1 借机构1 借机构2 贷机构1 贷机构2

select a.trade_date,a.batch_no,
   (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'D' and org='借机构1'  -- 最后一个org的条件有点奇怪,但是这儿肯定需要一个条件的) 借机构1,
 (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'D' and org='借机构2'  -- 最后一个org的条件有点奇怪) 借机构2,
 (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'D' and org='贷机构1'  -- 最后一个org的条件有点奇怪) 贷机构1,
 (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'D' and org='贷机构2‘  -- 最后一个org的条件有点奇怪) 贷机构2
(
select distinct trade_date,batch_no
from tabname
) a

追问

你的条件不对。
是按flag分是什么机构的,flag =d 是借,=c 是贷
TRADE_DATE ,BATCH_NO, D_ORA1 D_ORA2 C_ORA1 C_ORA2
19900901 1 机构a 机构b 机构c 机构d

追答select a.trade_date,a.batch_no,
   (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'D' and org='借机构1'  -- 最后一个org的条件有点奇怪,但是这儿肯定需要一个条件的) 借机构1,
 (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'D' and org='借机构2'  -- 最后一个org的条件有点奇怪) 借机构2,
 (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'C' and org='贷机构1'  -- 最后一个org的条件有点奇怪) 贷机构1,
 (select org from tabname b where a.trade_date = b.trade_date and a.batch_no = b.batch_no and flat = 'C' and org='贷机构2‘  -- 最后一个org的条件有点奇怪) 贷机构2
(
select distinct trade_date,batch_no
from tabname
) a

追问

ORA-01427:单行子查询返回多个行

追答

这个要看你数据到底是怎样的,要获取怎样的数据。

温馨提示:答案为网友推荐,仅供参考
相似回答