declare @sSql nvarchar(4000), @sSqlstring nvarchar(4000)
declare @BeginDate nvarchar(8), @FinishDate nvarchar(8)
set @BeginDate = '20080401'
set @FinishDate = '20080930'exec(' select @sSqlstring = @sSqlstring + sysdate from ( select convert(char(7),dateadd(month,id,'''+@BeginDate +'''),121) as sysdate from 
(select top '+cast(datediff(month,@BeginDate,@FinishDate)+1 as char(3)) + '(select sum(1) from sysobjects where name <= a.name) - 1 as id from sysobjects a) bb)a')select (@sSqlstring)执行select @sSqlstring = @sSqlstring + sysdate from ( select convert(char(7),dateadd(month,id,'''+@BeginDate +'''),121) as sysdate from 
(select top '+cast(datediff(month,@BeginDate,@FinishDate)+1 as char(3)) + '(select sum(1) from sysobjects where name <= a.name) - 1 as id from sysobjects a) bb)a得到以下结果集,
 sysdate 
 2008-04
 2008-05
 2008-06
 2008-07
 2008-08
 2008-09
如何将sysdate这个字段的值放到@sSqlstring中去?

解决方案 »

  1.   

    declare @sSql nvarchar(4000), @sSqlstring nvarchar(4000)
    declare @BeginDate nvarchar(8), @FinishDate nvarchar(8)
    set @BeginDate = '20080401'
    set @FinishDate = '20080930'
    set @sSql = ' select @sSqlstring = isnull(@sSqlstring+''/'','''') + sysdate from ( select convert(char(7),dateadd(month,id,'''+@BeginDate +'''),121) as sysdate from 
    (select top '+cast(datediff(month,@BeginDate,@FinishDate)+1 as char(3)) + '(select sum(1) from sysobjects where name <= a.name) - 1 as id from sysobjects a) bb)a'exec sp_executesql @sSql,N'@sSqlstring varchar(1000) output',@sSqlstring out
    select @sSqlstring
     /*
    ----------------------------------------
    2014-02/2014-04/2011-12/2012-11/2013-02/2013-03(1 行受影响)
    */