现在求一条sql语句:
  表结构如下:
          id           name           status           workday           re
 
 1001           张三           上班           2011-11-10
 1002           李四           上班           2011-11-10
 1003           王五           上班           2011-11-10
 1004           张三           上班           2011-11-11
 1005           李四           请假           2011-11-11
 1006           王五           上班           2011-11-11  现在这个表结构需要统计出来的报表样式如下(报表统计周期为上月的26号到本月的25号)  姓名 25号 26号   .....1号   2号.. 10号 11 号 ...    25号   
 张三                                   ....                     上班 上班  ...
 李四                                   ....                     上班 请假  ...
 王五                                   ....                     上班 上班  ...  也就是说需要把纵向的workday (从上一个月的26号到本月的25号所有天)横行过来 显示,循环取出某个月度的考勤详情报表
 求转换语句......

解决方案 »

  1.   

    行转列
    select name 
    ,max(case when workday='2011-11-10' then status end) "10号"
    ,max(case when workday='2011-11-11' then status end) "11号"
    ,max(case when workday='2011-11-12' then status end) "12号"
    from tb
    group by name 
    ;
      

  2.   

    你问的是sql server的内容.在这里已经有比较好的解答方案了.http://topic.csdn.net/u/20111120/10/8a36a195-be13-44d5-91b1-dc2410368663.html?19331
      

  3.   

    select name  
    ,max(decode(workday,'2011-11-10',status)) "10号"
    ,max(decode(workday,'2011-11-11',status)) "11号"
    ,max(decode(workday,'2011-11-12',status)) "12号"
    from tb
    group by name  

      

  4.   

    动态拼接SQL,两个系统都是通用的!