2015-05-20 1 views
0

Я хочу получить сумму всех столбцов десятичного типа, сгруппированных по уникальному полю ID. Есть ли более простой способ суммировать все столбцы, чем перечислять каждое имя столбца? Возможно, по типу данных, поскольку столбцы имеют одинаковый тип (десятичный (18,4))?SUM все столбцы определенного типа данных, а не вызов каждого столбца по имени

Это то, что я делаю прямо сейчас:

SUM(
ISNULL(TABLEA.aaa,0)+ 
ISNULL(TABLEB.bbb,0)+ 
ISNULL(TABLEC.ccc,0)+ 

) AS TOTAL 

и т.д., до бесконечности

+8

Нет там нет, если вы не используете динамические запросы –

+6

А с помощью динамических запросов, вероятно, сложнее, чем то, что вы делаете сейчас, если не сотни столбцов. –

ответ

0

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

Select 'isnull(' + Column_Name + ',0)+' 
From information_schema.columns 
Where TABLE_NAME = 'myTable' 
and data_type = 'int' 
+0

Хотя это достойное предложение, я не уверен, что он отвечает на вопрос. все еще получил мое преимущество. –

+0

На самом деле вопрос был о десятичной (18,4). Это то, что я имею в виду, это динамический qyery. Попробуйте использовать материал для выражения xml, и вы будете готовы использовать инструкцию, но это динамический запрос –

+0

@GiorgiNakeuri затем изменит запрос на data_type = 'decimal' и numeric_precision = 18 и numeric_scale = 4. Опять же, вышеупомянутый ответ предназначен для помощника для генерации вашей строки SQL вместо того, чтобы печатать список имен столбцов. – Jeremy

Смежные вопросы