如题,表中的数据是31天,如何取出来后按星期排列,就是日历上的那种形式。

解决方案 »

  1.   

    declare @index int
     set @index=(select min(day(time)) from tb where datepart(weekday,time)=1)
     select max(su)su,max(mo)mo,max(tu)tu,max(we)we,max(th)th,max(fr)fr,max(sa)sa
     from
     (
     select *,rowindex=row_number()over(order by getdate())
      from(
     select case when d=1 then dd end su,
            case when d=2 then dd end mo,
            case when d=3 then dd end tu,
            case when d=4 then dd end we,
            case when d=5 then dd end th,
            case when d=6 then dd end fr,
            case when d=7 then dd end sa
     from(
     select day(time) dd,datepart(weekday,time) d from tb
     )t
     )tt
     )ttt group by (rowindex+7-@index)/7
     
     
      

  2.   

    declare @index int
     set @index=(select top 1 day(time) from tb where datepart(weekday,time)=1)
    --还是改为top1吧
     select max(su)su,max(mo)mo,max(tu)tu,max(we)we,max(th)th,max(fr)fr,max(sa)sa
     from
     (
     select *,rowindex=row_number()over(order by getdate())
      from(
     select case when d=1 then dd end su,
            case when d=2 then dd end mo,
            case when d=3 then dd end tu,
            case when d=4 then dd end we,
            case when d=5 then dd end th,
            case when d=6 then dd end fr,
            case when d=7 then dd end sa
     from(
     select day(time) dd,datepart(weekday,time) d from tb
     )t
     )tt
     )ttt group by (rowindex+7-@index)/7
     
     
      

  3.   

    我有一个表A,有名为[01]到[31]共31个字段,我希望将这条记录取出来,填到你的那个表格里面,如果01=3933.00  则表格的01就显示3933.00,我现在是取31个值,先算出这个月1号是星期几,然后再赋值给对应31个TABEL,
    如果这月1号是周三,而我把01数据放到,第一行,第四格的TABEL,02放在第一行第五格的TABEL,这样太麻烦,因为会有七种可能性,我要七次这样的赋值过程。