При условии, что номера НЕДЕЛИ и номера Порядка совпадают, поддерживать последовательность столбцов не так уж и сложно.
Вы можете заметить, что я использовал #forecast и #article, потому что я не знал ваших реальных имен таблиц.
Пример
Declare @SQL varchar(max) = '
Select *
From (
Select A.ArticleID
,D.Description
,B.*
From #forecast A
Join #article D on A.ArticleID=D.ArticleID
Cross Apply (values (''Week''+left(Week,4),Amount) ) B(Item,Value)
) A
Pivot (max([Value])
For [Item] in (' + Stuff((Select ','+QuoteName('Week'+left(Week,4))
From (Select Distinct top 100 [Order],Week From #forecast Order by [Order] ) A
For XML Path('')),1,1,'') + ') ) p'
Exec(@SQL);
--Print @SQL
Возвращает
ArticleID Description Week51 Week52 Week1 Week2 Week3
1 Test 0 150 0 200 0
Мой непосредственный способ зафиксировать Вашу полную цель (не действительно отвечающий на Ваш вопрос, но надо надеяться помогающий Вам так или иначе): запишите псевдоним удара или функцию для него. grev (), возможно, или что-то подобное - по крайней мере, это - то, что я сделал бы, был я в Вашей ситуации.
Мне интересно видеть, возможно ли то, что Вы первоначально спросили, однако, таким образом голосуя за Ваш вопрос в надеждах, что можно получить 'реальный ответ'!