oracle
中如何写行和列的转换,求各位帮帮忙?

解决方案 »

  1.   


    --列转行姓名     套餐  张三    66元
    张三    96元
    李四    126元
    王五    156元
    王五    46元
    王五     96元
    王五    66元以上怎样变成姓名      46元  66元  96元   126元  156元张三                   1         1     
    李四                                           1
    王五        1         1         1                       1
    select 姓名,
    sum(decode(套餐,'46元',1)) as "46元",
    sum(decode(套餐,'66元',1)) as "66元",
    sum(decode(套餐,'96元',1)) as "96元",
    sum(decode(套餐,'126元',1)) as "126元",
    sum(decode(套餐,'156元',1)) as "156元"
    from T
    group by 姓名
    order by 姓名11G后可以用:SELECT *
    FROM T
    PIVOT (
             SUM(1)
             FOR 套餐
            IN  ('46元','66元','96元','126元','156元') 
    )适合11g之后的版本。也可以用sum decode--行转列union all