Oracle的行列转换

转自:http://blog.csdn.net/xb12369/article/details/39554935


尝试SQL: 统计每天每个类型操作个用多少用户

select *
  from (select trunc(created_time), action_type,  user_id
          from t_shq_task_operate_log l
         where l.created_time > trunc(sysdate - 7)
           and l.created_time < trunc(sysdate)
           and l.action_type in (0, 1, 2, 3, 4)) pivot(count(distinct user_id) for action_type in (0,1, 2, 3, 4));


首先感谢提供Oracle的行列转换丝路!!!


原始表数据:

Oracle的行列转换_第1张图片


辅助思考:

[sql]  view plain  copy
 print ?
  1. select usertelephone,  
  2.   max(decode(filedid, 1, answervalue, 0)) as "问题1",  
  3.   max(decode(filedid, 2, answervalue, 0)) as "问题2",  
  4.   max(decode(filedid, 3, answervalue, 0)) as "问题3",  
  5.   max(decode(filedid, 4, answervalue, 0)) as "问题4",  
  6.   max(decode(filedid, 5, answervalue, 0)) as "问题5",  
  7.   max(decode(filedid, 6, answervalue, 0)) as "问题6",  
  8.   max(decode(filedid, 7, answervalue, 0)) as "问题7"  
  9. from t_d_Serveyanswer where serveyid =3 group by usertelephone order by 1 asc;  


Oracle的行列转换_第2张图片


涨姿势的关键字:pivot

[sql]  view plain  copy
 print ?
  1. select * from  
  2.   (select usertelephone, filedname, answervalue,t.adddate from t_d_Serveyanswer t join  
  3.    t_d_Serveyfiled t1 on t.filedid = t1.id where t.serveyid =3)  
  4. pivot(  
  5.   max(answervalue) for filedname in (  
  6.     '坑德基和麦当劳 你更喜欢 吃什么?',  
  7.     '你什么?',  
  8.     '你是那种人?',  
  9.     '性别',  
  10.     '你爱好什么?',  
  11.     '你叫什么?',  
  12.     '你用过天翼客服吗?'  
  13.   )  
  14. order by 1;  

Oracle的行列转换_第3张图片



-------------------------------------------------------------------------------------------------------------------------------

存储过程实现动态行转列:http://www.cnblogs.com/QQParadise/articles/1712093.html

0

你可能感兴趣的:(SQL语句)