Re[2]: Горизонтальный срез головного мозга
От: ASta Украина  
Дата: 10.03.11 14:20
Оценка: 4 (1)
Здравствуйте, Sshur, Вы писали:

S>Здравствуйте, AC1D, Вы писали:


ACD>>Здравствуйте други


ACD>>простой вопрос под конец рабочего дня котелок не варит ..


ACD>>есть примерно такая таблица


ACD>> id , SumDepart1 , SumDepart2, SumDepart3


ACD>> нужно посчитать общую сумму всех департаментов на ID


ACD>> можно конечно сделать тупо select id,sum(sumdepart1+sumdepart2+sumdepart3) as Total from t1 group by id, но есть ли способ умнее?!?


ACD>> Db:Oracle


S>На MSSQL можно получить список всех колонок таблицы, написать скрипт который напишет динамический SQL, суммирующий колонки по определенному критерию. На Оракле скорее всего это тоже можно, но нафига? Ладно бы у вас было 100 колонок и в разных случаях надо было бы суммировать по разному. Для трех колонок ИМХО sum(sumdepart1+sumdepart2+sumdepart3) самое подходящее.


1. IMHO в общем случае более подходящее: ... sum(NVL(sumdepart1, 0) + NVL(sumdepart2, 0) + NVL(sumdepart3, 0)) ... (или как там NVL юзают).
2. Что будет если добавиться sumdepart4, потом sumdepart5, ..., sumdepart300? IMHO в общем случае лучше вынести sumdepart в отдельную таблицу...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.