日期:2014-05-17  浏览次数:20696 次

请教一个表结构问题。
现在有表中nd,yf,bumen,shuliang,xiaoshou_dm这5列。用来统计某年某月某部门某xiaoshou_dm的数量。xiaoshou_dm这列里面有5种值a,b,c,d,e
我能不能通过视图把这个表的结构变成nd,yf,bumen,dm_a,dm_b,dm_c,dm_d,dm_e这种结构,dm_a,dm_b,dm_c,dm_d,dm_e这5列里放的是某部门的数量。
谢谢各位了!

------解决方案--------------------
SQL code

select nd,yf,bumen,
        sum(case when xiaoshou_dm = 'a' then shuliang else 0) end dm_a,
        sum(case when xiaoshou_dm = 'b' then shuliang else 0) end dm_b,
        sum(case when xiaoshou_dm = 'c' then shuliang else 0) end dm_c,
        sum(case when xiaoshou_dm = 'd' then shuliang else 0) end dm_d,
        sum(case when xiaoshou_dm = 'e' then shuliang else 0) end dm_e,
  from t
 group by nd,yf,bumen

------解决方案--------------------
典型行列转换,使用decode,case函数都是可以的
------解决方案--------------------
可以自己写个通用的function