Oracle的 简单行转列

应个报表要求做个

时间 双色球, 胜负彩。。。。。

200905 销量 销量

200906 销量 销量

200907 销量 销量

200908 销量 销量

一个SQL 语句得到结果是:

f_yearmonth, lot_name,money

200905 双色球 50

200905 胜负彩 100

200906 双色球 60

200906 胜负彩 70

Select f_yearmonth,
Max(decode(f_lotname,'双色球',f_money,0)) As "双色球",
Max(decode(f_lotname,'福彩3D',f_money,0)) as "福彩3D",
Max(decode(f_lotname,'胜负彩',f_money,0)) as "胜负彩",
Max(decode(f_lotname,'时时彩',f_money,0)) as "时时彩",
Max(decode(f_lotname,'时时乐',f_money,0)) as "时时乐",
From
t_tmp_test_A
Group By f_yearmonth
Order By f_yearmonth

关键语句:

Max(decode(f_lotname,'双色球',f_money,0)) As "双色球",

Group By f_yearmonth

应为 按时间重组只有一条,并且只有一条数据: 200905 双色球 50

那么 用MAX取一条数据 就是50

decode 意思说 如果是‘双色球’ 取对应的f_money 并且放在 命名为 "双色球"的 列上。

很显然 这列是固定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值