Re[4]: Горизонтальный срез головного мозга
От: ASta Украина  
Дата: 11.03.11 18:38
Оценка:
Здравствуйте, Sshur, Вы писали:


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


AS>>1. IMHO в общем случае более подходящее: ... sum(NVL(sumdepart1, 0) + NVL(sumdepart2, 0) + NVL(sumdepart3, 0)) ... (или как там NVL юзают).


S>NVL — проверка на null? топикстартер про возможные null ничего не говорил

NVL(sumdepart1, 0) — "if (sumdepart1 not is null) then return sumdepart1 else return 0"
От проектировщиков способных на вышеописанное (а позже топик стартер признался что их там 8 штук) хорошего ждать не приходиться.

AS>>2. Что будет если добавиться sumdepart4, потом sumdepart5, ..., sumdepart300? IMHO в общем случае лучше вынести sumdepart в отдельную таблицу...


S>Если их много и/или они будут добавляться — то можно попытаться сделать, чтобы они были в строках в отдельной таблице, а не в столбцах. вот тогда sum будет хорошо работать.

Я уже написал. Это я и предлагал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.