Hi, I've had a similar problem where I've needed to make a crosstab query in SQL Server.
I ended up making a stored procedure that does it for me - just pass in a standard query and a few other parameters.
Here it us - I hope you find it useful:
--==============================================
create procedure sp_XTabQuery
@strSQL varchar(8000),
@ColumnHeading varchar(1000),
@Value varchar(1000),
@RowHeading varchar(1000),
@SortField varchar(1000),
@ValueOperator varchar(1000)
as
declare @FieldName varchar(1000), @FieldValue varchar(8000),@RowHeadingValue varchar(1000),@OrderByValue varchar(1000), @XTSQL varchar(8000)
set @XTSQL = 'select ' + @RowHeading + ', '
exec('declare mycursor cursor for select distinct ' + @ColumnHeading + ', ' + @SortField + ' from (' + @strSQL + ') x order by ' + @SortField)
open mycursor
fetch next from mycursor into @FieldName, @OrderByValue
While @@fetch_status = 0
begin
if @XTSQL <> 'select ' + @RowHeading + ', '
set @XTSQL = @XTSQL + ','
set @XTSQL = @XTSQL + '[' + @FieldName + '] = ' + @ValueOperator + '(case when ' + @ColumnHeading + ' = ''' + @FieldName + ''' then ' + @Value + ' else '''' end) '
fetch next from mycursor into @FieldName, @OrderByValue
end
set @XTSQL = @XTSQL + ' from (' + @strSQL + ') a'
set @XTSQL = @XTSQL + ' group by ' + @RowHeading
exec(@XTSQL)
close mycursor
deallocate mycursor