T出差:  日期,人员,地点,返回日期
         0506  A    上海  0506
         0508  A    北京  0510
        0501  B    河北  0508
        0520  C    南京  0610
 .........我想得到一个表格:
序号,姓名,01,02,03,04,05,06,07,08, 09,   10....20....31 (指日期)
01   A                       上海     北京 北京 北京      
02   B    河北 河北 河北 ....         河北                             
03   C                                                南京 南京...南京即得到一个直观的在一个月中人员出差地点的表格,无地点为空。
                

解决方案 »

  1.   

    以5月為例
    if not object_id('T') is null
    drop table T
    Go
    Create table T([日期] nvarchar(4),[人员] nvarchar(1),[地点] nvarchar(2),[返回日期] nvarchar(4))
    Insert T
    select N'0506',N'A',N'上海',N'0506' union all
    select N'0508',N'A',N'北京',N'0510' union all
    select N'0501',N'B',N'河北',N'0508' union all
    select N'0520',N'C',N'南京',N'0610'
    Goif object_id('Tempdb..#') is not null
    drop table #
    select top 10 ID=identity(int,1,1) into # from sysobjects--輔助表
    declare @s nvarchar(4000),@i int
    select @s='',@i=31
    while @i>0
    select @s=','+quotename(@i)+N'=max(case when day([日期])='+rtrim(@i)+N' then [地点] else '''' end)'+@s,@i=@i-1
    exec('select [人员]'+@s+'
    from 
    (Select dateadd(d,t2.ID,cast(''08''+[日期] as datetime)) [日期],[人员],[地点]
    from  T
    join # t2 on dateadd(d,t2.ID,cast(''08''+[日期] as datetime))<=cast(''08''+[返回日期] as datetime))Tab
    group by [人员]')
    人员   1    2    3    4    5    6    7    8    9    10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31
    ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
    A                                            北京   北京                                                                                                       
    B         河北   河北   河北   河北   河北   河北   河北                                                                                                                 
    C                                                                                                        南京   南京   南京   南京   南京   南京   南京   南京   南京   南京   (3 個資料列受到影響)
      

  2.   

    以上需要輔助表..
    行列互轉例子:
    http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html