Отображение нескольких итогов в одной таблице из Oracle - PullRequest
0 голосов
/ 14 мая 2009

Я пытаюсь вычислить общее количество строк в таблице с именем DRAWING по следующему запросу: Выберите поле, платформу, количество (doc_id) как общее значение из группы чертежей по полю, платформе;

но мне также нужно отобразить общее количество вложений / не вложений для каждой платформы

SQL:

выбрать поле, платформу, количество (doc_id) как прикрепленное к чертежу, где file_bin не является пустой группой по полю, платформе;

выбрать поле, платформу, количество (doc_id) как non_attached из чертежа, где file_bin - пустая группа по полю, платформа;

Есть ли способ объединить 3 значения в представление? например Поле, Платформа, Всего, Прикреплено, Не прикреплено

Ответы [ 3 ]

1 голос
/ 14 мая 2009

Попробуйте это:

select 
  field, 
  platform, 
  count(doc_id) as total,
  sum(iif(file_bin is null, 1, 0)) as attached,
  sum(iif(file_bin is not null, 1, 0)) as non_attached
from drawing 
where doc_id is not null 
group by field, platform
0 голосов
/ 14 мая 2009

Я бы использовал декодирование вместо регистра, не знаю, что работает лучше (не проверено):

select field
,      platform
,      count(doc_id) as total
,      sum(decode(file_bin,null,1,0)) attached 
,      sum(decode(file_bin,null,0,1)) non_attached
from   drawing 
where  doc_id is not null 
group by field,platform
0 голосов
/ 14 мая 2009

благодаря предложению Дугласа Тоси мне удалось вместо этого использовать метод case.

выберите поле, Платформа, считать (doc_id) как общее количество, Сумма (CASE КОГДА file_bin является НУЛЕМ ТОГДА 1 КОГДА file_bin не является нулевым, ТО 0 КОНЕЦ) как прикреплено, Сумма (CASE КОГДА file_bin является НУЛЕМ, ТО 0 КОГДА file_bin не является нулевым, ТО 1 END) как non_attached от чертежа, где doc_id не является нулевым группировка по полю, платформа

идеально !!

Еще раз спасибо, Дуглас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...