求SQL(三张表数据合并)

O___O 2014-06-16 09:15:22
请教下图结果怎么实现?谢谢!

收款编号 应收金额 付款方式 收款金额 消费项目 消费金额
201406001 836.00 0 0
201406001 0.00 0 0
201406001 0.00 现金 36.00 0.00
201406001 0.00 银联 800.00 0.00
201406001 0.00 0.00 足浴 180.00
201406001 0.00 0.00 按摩 380.00
201406001 0.00 0.00 桑拿 276.00

转换后

收款编号 应收金额 付款方式 收款金额 消费项目 消费金额
201406001 836.00 现金 36.00 足浴 180.00
201406001 0.00 银联 800.00 按摩 380.00
201406001 0.00 0.00 桑拿 276.00
...全文
488 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

--构造三个表数据
with tab1 as
(select 201406001 code, 836.00 c1
from dual
union all
select 201406001, 0.00
from dual),
tab2 as
(select 201406001 code, '现金' c4, 36.00 c5
from dual
union all
select 201406001, '银联', 800.00
from dual),
tab3 as
(select 201406001 code, '足浴' c6, 180 c7
from dual
union all
select 201406001, '按摩', 380
from dual
union all
select 201406001, '桑拿', 276
from dual)
--查询sql
select t1.code, t1.c1, t2.c4, t2.c5, t3.c6, t3.c7
from (select code, c1, row_number() over(partition by code order by c1) rn
from tab1) t1
full join (select code,
c4,
c5,
row_number() over(partition by code order by c5) rn
from tab2) t2
on t1.code = t2.code
and t1.rn = t2.rn
full join (select code,
c6,
c7,
row_number() over(partition by code order by c7) rn
from tab3) t3
on t1.code = t3.code
and t1.rn = t3.rn


查询结果
O___O 2014-06-16
  • 打赏
  • 举报
回复
表1,消费项目表 表2,付款方式表 表2,结算主表 用户要求三张表的结果排在一起。(因3张表里面都可能有多行数据,并且不固定)
O___O 2014-06-16
  • 打赏
  • 举报
回复
请看2楼图,就是把上半部结果合并成下半部的样子。
小灰狼W 2014-06-16
  • 打赏
  • 举报
回复
需求描述不清...
O___O 2014-06-16
  • 打赏
  • 举报
回复
重排图片!!!!!!
O___O 2014-06-16
  • 打赏
  • 举报
回复

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧