Сумма всех динамических столбцов - PullRequest
0 голосов
/ 12 октября 2018

Вот что мне нужно найти,

Суммирование всех значений, присутствующих в динамически генерируемых системных столбцах.

Я нашел, как генерировать динамически генерируемые столбцы с помощьюследующий запрос.

    declare @columnnames nvarchar(max) =  'select COLUMN_NAME FROM  [Powerbireports].INFORMATION_SCHEMA.COLUMNS
    where TABLE_NAME = ''FCL_Pivot'' and column_name like ''%Charges'''

Показывает столбцы, заканчивающиеся начислениями.

У меня есть 30+ столбцов обвинений.Мои данные выглядят так, как показано ниже.

Данные

Используя эти столбцы, мне нужно выполнить сумму всех значений, присутствующих в 30 столбцах (используя запрос выше), иобновить в другой столбец с именем обработки.

Я попытался с помощью запроса ниже.

    declare @dynamicsql nvarchar(max) = N'Update [dbo].[FCL_Pivot] set Handling = (select SUM('+@columnnames+'))'
    exec sp_executesql @dynamicsql

Он показывает неправильный синтаксис рядом с «select».

Пожалуйста, помогите мне, как преодолеть этот запрос или любой другой подход.

1 Ответ

0 голосов
/ 12 октября 2018

Сначала создайте разделенный запятыми список всех столбцов, оканчивающихся на «заряды»:

DECLARE @column_plus_str NVARCHAR(MAX) 
SELECT @column_plus_str = STUFF((SELECT '+ISNULL(' + QUOTENAME(COLUMN_NAME)+ ', 0)'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'FCL_Pivot' AND COLUMN_NAME LIKE '%charges'
FOR XML PATH('')), 1, 1, '')

Затем обновите Обработка.Вам не нужен агрегат SUM, потому что вы не группируете, верно?Обработка = ISNULL ([100% экзаменационные расходы], 0) + ISNULL ([50% экзаменационные расходы], 0) + ...

DECLARE @dynamicsql NVARCHAR(MAX) = N'Update [dbo].[FCL_Pivot] set Handling = ' + @column_plus_str
EXEC sp_executesql @dynamicsql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...