--列转行姓名 套餐 张三 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
--列转行姓名 套餐 张三 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