Я разрабатываю программу, в которой у меня есть несколько столбцов, которые мне нужно показать сумму для конечного пользователя. Эти столбцы назначаются в таблице ColumnTest в столбце ColumnNames, и их имена могут быть изменены пользователем. Поэтому мне нужно найти все имена столбцов в ColumnTest \ ColumnNames и затем суммировать все значения, касающиеся этих имен столбцов, из выходной таблицы.
Ранее я использовал этот скрипт, где я получаю все имена столбцов в @cols, например, [col1]. [Col2]. [Col3] и так далее, но когда я пытаюсь выполнить запрос, я невозможность суммировать эти столбцы, используя '+ @cols +'. Когда я запускаю это, я получаю следующую ошибку: Функция SUM требует 1 аргумента (ов). Есть ли возможность сделать эту процедуру без существенного снижения времени загрузки?
DECLARE
@cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SELECT @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.ColumnNames)
FROM ColumnTest c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') ,1,1,'')
set @query =
'
SELECT
ID
,SUM('+ @cols + ')
FROM Output_table
GROUP BY
ID
'
execute(@query);