select * from 
(
select TrainingCenterNid,TrainingCenterName from dbo.BI_TrainingCenters
) as a
full join 
(...动态sql结果)想要 full join 这下面的结果····
declare @sqll varchar(max)
set @sqll = 'select 区域 '
select @sqll = @sqll + ' , max(case 时间 when ''' +convert(varchar(10),时间,120) + ''' then 金额 else 0 end) ['
 + convert(varchar(10),时间,120) + ']'
from (select distinct 时间 from #tb) as a
set @sqll = @sqll + ' from #tb group by 区域'
exec(@sqll) 
drop table #tb

解决方案 »

  1.   

    declare @sqll varchar(max)
    set @sql='select * from  
    (
    select TrainingCenterNid,TrainingCenterName from dbo.BI_TrainingCenters
    ) as a
    full join '
    select @sqll = '(select 区域 '
    select @sqll = @sqll + ' , max(case 时间 when ''' +convert(varchar(10),时间,120) + ''' then 金额 else 0 end) ['
     + convert(varchar(10),时间,120) + ']'
    from (select distinct 时间 from #tb) as a
    set @sqll = @sqll + ' from #tb group by 区域) t on 连接条件'
    exec(@sqll)  
    drop table #tb
      

  2.   

    先动态,再full join 也没什么不行的:
    动态到一个全局临时表,出来以后再 join.
      

  3.   

    时间进到 set @sql='select * from  where time between 2011-9-9 and 2011-9-30 ‘ 要怎么写~
      

  4.   


    SQL code
    declare @sqll varchar(max)
    set @sql='select * from  
    (
    select TrainingCenterNid,TrainingCenterName from dbo.BI_TrainingCenters
    ) as a
    full join '
    select @sqll = '(select 区域 '
    select @……
    [/Quote]