Этого можно добиться с помощью Dynami c sql.
create table Table123
(
ID int
)
Logi c
DECLARE @Counter INT
DECLARE @FCSTM INT
DECLARE @Start DATE
DECLARE @End DATE,@StrQuery varchar(max)
SET @Counter=0
set @StrQuery='select distinct ID,'
WHILE ( @Counter <= 40)
BEGIN
set @StrQuery=@StrQuery+'null as '+ QUOTENAME(@Counter)+','
SET @Counter = @Counter + 1
END
set @StrQuery=SUBSTRING(@StrQuery,1,LEN(@StrQuery)-1)+' FROM Table123 Group by id'
exec (@StrQuery)
Выходной запрос
select distinct ID,null as [0],null as [1],null as [2],null as [3],null as [4],null as [5],null as [6],null as [7],null as [8],null as [9],null as [10],
null as [11],null as [12],null as [13],null as [14],null as [15],null as [16],null as [17],null as [18],null as [19],null as [20],null as [21],null as [22],
null as [23],null as [24],null as [25],null as [26],null as [27],null as [28],null as [29],null as [30],null as [31],null as [32],null as [33],null as [34],
null as [35],null as [36],null as [37],null as [38],null as [39],null as [40] FROM Table123 Group by id