У меня есть динамический SQL-запрос, как показано ниже.T sql CONCAT по запятой динамический запрос
DECLARE @cols AS NVARCHAR(MAX) = '[0],[3],[11]',
@query AS NVARCHAR(MAX)
SET @query = N'SELECT * FROM
(
SELECT
year(createdDate) as [year],month(createdDate) as [month],cp.product_Id as product_ID,cp.salesprice as Amount
FROM customer_products cp
)s
PIVOT
(
SUM(Amount)
FOR product_Id IN ('+ @cols +'))
AS pvt;'
EXECUTE(@query)
Вопрос:
выше запрос работает, однако, ниже запроса не работает из-за
SELECT @cols = CONCAT(@cols, '[', cast(product_ID as varchar),']') FROM Product
код block.Error отображает Неправильный синтаксис около
DECLARE @cols AS NVARCHAR(MAX) = '',
@query AS NVARCHAR(MAX)
SELECT @cols = CONCAT(@cols, '[', cast(product_ID as varchar),'],') FROM Product
SET @query = N'SELECT * FROM
(
SELECT
year(createdDate) as [year],month(createdDate) as [month],cp.product_Id as product_ID,cp.salesprice as Amount
FROM customer_products cp
)s
PIVOT
(
SUM(Amount)
FOR product_Id IN ('+ @cols +'))
AS pvt;'
EXECUTE(@query)
Где я пропущу то, чего не хватает в вышеуказанном запросе при выборе productID из продукта?
Я думаю, вам нужно удалить последний '' из @cols – lad2025
выше запроса в [0], [3], [11], поэтому я добавил, как я могу разрешите, если вы скажете, что я должен удалить спасибо –
Используйте 'SET @cols = LEFT (@cols, LEN (@cols) - 1)' после конкатенации и перед определением @query. И посмотрите [мой ответ] (http://stackoverflow.com/questions/32294417/tsql-pivoting-issue-looking-for-better-approach/32295875#32295875) для демонстрации примера – lad2025