sql - Oracle将多行数据转换成一行数据的问题,谢谢
本文介绍了sql - 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 |
谢谢
解决方案
这是个典型的行转列的问题
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
这篇关于sql - Oracle将多行数据转换成一行数据的问题,谢谢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文