度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1282|回复: 3
打印 上一主题 下一主题

[分享] Oracle 数据显示 横表转纵表

[复制链接]

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
跳转到指定楼层
楼主
发表于 2020-7-14 16:57:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、建表
create table test
(
dm1 char(3),
dm2 char(3),
mc1 nvarchar2(20),
val nvarchar2(20)
)

2、填入数据如下:
DM1        DM2        MC1        VAL
101        1        c1        100
101        1        c2        80
101        1        c3        40
101        2        c1        30
101        2        c2        80
102        4        c1        9
102        6        c2        50


转换后数据显示如下:
DM1        DM2        c1        c2        c3
101        1        100        80        40
101        2        30        80         
102        4        9                  
102        6                 50         


3、转换语句:
select dm1,dm2,sum(decode(mc1,'c1',val)) c1,sum(decode(mc1,'c2',val)) c2,sum(decode(mc1,'c3',val)) c3
from test  group by dm1,dm2

注:该语句是在val为数值的情况下的执行方法,如果val不为数值型,或者包含字符串等类型的话,运用sum会报错,这里可以采用另外一个方法,将sum改为max即可,语句如下:

select dm1,dm2,max(decode(mc1,'c1',val)) c1,max(decode(mc1,'c2',val)) c2,max(decode(mc1,'c3',val)) c3
from test  group by dm1,dm2

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

348

主题

3572

帖子

9299

积分

论坛元老

Rank: 8Rank: 8

积分
9299
沙发
发表于 2020-7-14 23:05:38 | 只看该作者
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9299

积分

论坛元老

Rank: 8Rank: 8

积分
9299
板凳
发表于 2020-7-14 23:06:16 | 只看该作者
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
 楼主| 发表于 2020-7-18 15:46:54 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-1 10:24 , Processed in 0.123818 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表