sql语句:如何将横表导成竖表?
象这样的:(假设表名为table)
日期      规格    入     出     存
200601    a1      1      2      5
200601    a2      2      3      2
200601    a3      3      4      2
200601    a4      4      5      2要变成
日期     项目   a1  a2  a3  a4
200601   入     1   2    3   4
200601   出     2   3   4    5
200601   存     5   2   2    2  将如何写这个sql语句呢?

解决方案 »

  1.   

    select 日期,'入' as 项目,max(decode(规格,'a1',入)) as a1
    ,max(decode(规格,'a2',入)) as a2
    ,max(decode(规格,'a3',入)) as a3
    ,max(decode(规格,'a4',入)) as a4
    from test
    group by 日期
    union all
    select 日期,'出' as 项目,max(decode(规格,'a1',出))
    ,max(decode(规格,'a2',出))
    ,max(decode(规格,'a3',出))
    ,max(decode(规格,'a4',出))
    from test
    group by 日期
    union all
    select 日期,'存' 项目,max(decode(规格,'a1',存))
    ,max(decode(规格,'a2',存))
    ,max(decode(规格,'a3',存))
    ,max(decode(规格,'a4',存))
    from test
    group by 日期
      

  2.   

    对,行列转换应该只有楼上一条路, 就是用union