сумма нескольких столбцов в ORACLE

У меня есть таблица с 97 столбцами, я хочу суммировать 96 столбцов.

select sum(col1+col2+col3+.....+col96) 
from tableA where meter_id=x;

Я не хочу давать все 96 имен столбцов, что это лучший способ сделать это? С Уважением, RR

4

4 ответы

Невозможно избежать написания имени каждого столбца. Все, что вы можете сделать, это проклинать глупое моделирование данных и заняться сокращением.

6
добавлено

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

Select column_name || '+' as column_name_list
From user_tab_columns
Where table_name = 'TABLEA'
Order by column_id

Это не изменяет мир, но упрощает запись одного запроса.

4
добавлено

Вы можете создать виртуальный столбец , который добавит ваш 96 столбцы, что-то вроде:

alter table TABLEA add (MY_TOTAL_COL NUMBER GENERATED ALWAYS AS (col1+col2+col3...) VIRTUAL);

Тогда ваш запрос может просто выполнить sum (my_total_col) .

1
добавлено

Вы могли бы лучше всего суммировать столбцы, а затем поместить результат в Excel, чтобы сделать сумму сумм. В противном случае этот запрос должен делать то, что вам нужно:

SELECT SUM(TOTAL_SUM) FROM (
  SELECT SUM(column1) AS TOTAL_SUM FROM your_table
  UNION
  SELECT SUM(column2) AS TOTAL_SUM FROM your_table
  UNION
  SELECT SUM(column3) AS TOTAL_SUM FROM your_table
);
1
добавлено
Oracle RU
Oracle RU
303 участник(ов)

Русскоязычная группа по Oracle. — Архитектура СУБД — PL/SQL — Оптимизация — Администрирование — Вакансии Oracle (указать инфу по вилке ЗП и удалёнке) Приглашайте коллег :-) Запрещены: личные оскорбления, обсуждения оффтопик вопросов политики и религии