4,820
社区成员
发帖
与我相关
我的任务
分享
declare @y smallint,@m tinyint,@sql nvarchar(4000)
select @y = year(GETDATE()), @m = MONTH(getdate())
set @sql = 'select aa=min(aa), bb=min(bb), cc = min(cc)'
select top 12 @sql = @sql+','+quotename(ltrim(y)+'_'+name)+'=max(case order_y when '+ltrim(y)+' then '+name+' else 0 end)' from
(
select y=@y, m=colid-8, name from syscolumns where id = object_id('XXX') and colid between 9 and 20
union all
select y=@y+1,m=colid-8+12, name from syscolumns where id = object_id('XXX') and colid between 9 and 20
) t
where m >=@m
set @sql = @sql + ' from XXX where order_y in (' + case when @y < 8 then ltrim(@y) else ltrim(@y)+','+ltrim(@y+1) end+') group by aa,bb,cc'
exec (@sql)