Наконец, я добился результатов, используя запрос ниже
DECLARE @selectcols AS NVARCHAR(MAX) = ''
,@pivotcols AS NVARCHAR(MAX) = ''
,@query AS NVARCHAR(MAX) = ''
SELECT @selectcols = STUFF((
SELECT ',[AMT1-' + convert(VARCHAR(10), [DATE], 101) + ']'
+ ',[AMT2-' + convert(VARCHAR(10), [DATE], 101) + ']'
+ ',[AMT3-' + convert(VARCHAR(10), [DATE], 101) + ']'
+ ',[TOT-' + convert(VARCHAR(10), [DATE], 101) + ']'
FROM #table
GROUP BY [DATE]
ORDER BY [DATE]
FOR XML PATH('')
,TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SELECT @pivotcols = STUFF((
SELECT ',[AMT1-' + convert(VARCHAR(10), [DATE], 101) + ']'
FROM #table
GROUP BY [DATE]
ORDER BY [DATE]
FOR XML PATH('')
,TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SET @query = N'SELECT [Model],' + @selectcols + N' from
(
select [Model],AMT1,AMT2,AMT3,AMT1+AMT2+AMT3 AS TOT
,''AMT1-'' + convert(VARCHAR(10), [DATE], 101) as DATE1
,''AMT2-'' + convert(VARCHAR(10), [DATE], 101) as DATE2
,''AMT3-'' + convert(VARCHAR(10), [DATE], 101) as DATE3
,''TOT-'' + convert(VARCHAR(10), [DATE], 101) as DATE4
from #table
) x
pivot
(
max(AMT1)
for DATE1 in (' + @pivotcols + N')
) r
pivot
(
max(AMT2)
for DATE2 in (' + replace(@pivotcols,'AMT1','AMT2') + N')
) p
pivot
(
max(AMT3)
for DATE3 in (' + replace(@pivotcols,'AMT1','AMT3') + N')
) o
pivot
(
max(TOT)
for DATE4 in (' + replace(@pivotcols,'AMT1','TOT') + N')
) t'
EXEC sp_executesql @query;