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 并且放在 命名为 "双色球"的 列上。

很显然 这列是固定!

Oracle的 简单行转列

你可能感兴趣的:(oracle,sql,F#)