declare @s nvarchar(4000) 
declare @cols nvarchar(300) 
declare @QID integer
set @s=''
set @cols=',QID,lineID,curid'
select @cols =@cols+','+quotename(Name) from CarStyle order by seqno 
select @s=@s+','+quotename(Name)+'=max(case CarStyle when '+rtrim(ID)+' then Price end)' from CarStyle order by seqno asc

exec('select (select Name from line where ID=a.LineID) as LineName,(select Name from currency where id=a.CurID) as CurName ' + @cols+' 
from (select QID,lineID,[MINID]=MIN(ID),[CurID]=max(CurID)'+@s+' from LinePrice where QID=237 and FeeID=101 and CarStyle is not null group by QID,LineID)
a ORDER BY MINID')