如何根据条件将将一个表的一列拆分成多列显示

封尘-莫若 2019-04-10 11:07:29
表格内容如下
字段 a b
值 11 1
12 2
13 1
14 2


我想显示的的结果就是,b=1的显示一列,b=2的显示一列。有什么简便的方法没,我想到的是case when判断和语句结果集取值。
...全文
429 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 LXYWXWJQ 的回复:
[quote=引用 4 楼 学海无涯回头是岸_ 的回复:] with t1 as ( select 1 as id,400 as sr from dual union select 2 as id ,300 as sr from dual union select 3 ,300 from dual union select 4,200 from dual) select * from t1 pivot (listagg(id,',') within group (order by sr) for sr in(200,300,400)); 200 300 400 -------------------- -------------------- -------------------- 4 2,3 1 这个结果吗?
不是的,我的表里边内容比较多。里边涉及到每个月的数据 列名 a(月份) b(数值) 值 201901 1 201902 2 201903 5 201903 5 我想呈现的效果是这样,按月份汇总 列名 201901 201902 201903 1 2 10 [/quote] 你把我上面的语句 listagg(id,',') within group (order by sr) 换成 sum(b)
封尘-莫若 2019-04-16
  • 打赏
  • 举报
回复
引用 4 楼 学海无涯回头是岸_ 的回复:
with t1 as ( select 1 as id,400 as sr from dual union select 2 as id ,300 as sr from dual union select 3 ,300 from dual union select 4,200 from dual) select * from t1 pivot (listagg(id,',') within group (order by sr) for sr in(200,300,400)); 200 300 400 -------------------- -------------------- -------------------- 4 2,3 1 这个结果吗?
不是的,我的表里边内容比较多。里边涉及到每个月的数据 列名 a(月份) b(数值) 值 201901 1 201902 2 201903 5 201903 5 我想呈现的效果是这样,按月份汇总 列名 201901 201902 201903 1 2 10
  • 打赏
  • 举报
回复
with t1 as ( select 1 as id,400 as sr from dual union select 2 as id ,300 as sr from dual union select 3 ,300 from dual union select 4,200 from dual) select * from t1 pivot (listagg(id,',') within group (order by sr) for sr in(200,300,400)); 200 300 400 -------------------- -------------------- -------------------- 4 2,3 1 这个结果吗?
qinjiaqiang 2019-04-12
  • 打赏
  • 举报
回复
ls说的对, PIVOT了解一下
AHUA1001 2019-04-11
  • 打赏
  • 举报
回复
看看这个
https://www.cnblogs.com/linJie1930906722/p/6036714.html
卖水果的net 2019-04-10
  • 打赏
  • 举报
回复
结果要求什么样 ?

17,086

社区成员

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

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