Я вижу несколько ошибок.
Сначала вы не собираете имена столбцов в формате MMM yyy
. На самом деле, когда вы написали это, вы объединяете последовательность строкового литерала PName
.
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(FORMAT(GLE.[Posting Date],'MMM yy'))
FROM [Live Company$G_L Entry] AS GLE
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'');
Чтобы отладить это в будущем, вы можете использовать либо print @cols
, либо select @cols
, чтобы увидеть, выглядит ли он правильно.
У самого основного запроса были и другие проблемы.
set @query = N'SELECT [G_L Account No_], Branch' -- presumably you want to see these too
+ @cols + N' from
(select -- <-- missing from your query
GLE.[G_L Account No_]
,COALESCE(GLE.[Global Dimension 1 Code], 00) AS "Branch"
,CAST(SUM(GLE.[Amount]) AS DECIMAL(18,2)) AS Amount
,FORMAT(GLE.[Posting Date],'MMM yy') as PDate
FROM [Live Company$G_L Entry] AS GLE
GROUP BY GLE.[G_L Account No_],GLE.[Global Dimension 1 Code],
FORMAT(GLE.[Posting Date],'MMM yy') -- <-- correct grouping expression
) x
Опять же, вывод вывода переменной @query
позволит вам увидеть запрос, который вызывает ошибку. В следующий раз, когда вы отправите вопрос, было бы невероятно полезно это увидеть.