Oracle将多行数据转换成一行数据的问题,谢谢

ID 收费站 流量 日期 类型
1 收费站1号 20 6-20 进口
2 收费站1号 30 6-20 出口
3 收费站2号 40 6-20 进口
4 收费站2号 50 6-20 出口
5 收费站1号 20 6-21 进口
6 收费站1号 30 6-21 出口
7 收费站2号 40 6-21 进口
8 收费站2号 50 6-21 出口
要将上面的表数据显示成如下格式
ID 日期 收费站1号进口流量 收费站1号出口流量 收费站2号进口流量 收费站2号出口流量
1 6月20日 20 30 40 50
2 6月21日 20 30 40 50

谢谢

阅读 4.1k
1 个回答

这是个典型的行转列的问题

select rownum  as id, t.*
from (
    select 
      日期,
      sum(decode(收费站||类型, '收费站1号进口', 流量, 0)) as 收费站1号进口流量,
      sum(decode(收费站||类型, '收费站1号出口', 流量, 0)) as 收费站1号出口流量,
      sum(decode(收费站||类型, '收费站2号进口', 流量, 0)) as 收费站2号进口流量,
      sum(decode(收费站||类型, '收费站1号出口', 流量, 0)) as 收费站2号口流量
    from table_name
    group by 日期
) t
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进