Следующий запрос:
select s.site_name as site, NVL(ct.calltypename,"<No queue assigned>") as queue,
AVG(TO_NUMBER(cd.datavalue)) as average, count(distinct cr.callid) as count
from callrecord cr
left join calldata cd on cd.callid=cr.callid and cd.sitekey=cr.arrivalsite and cr.requeuecount=cd.requeuecount-1
left join calltypes ct on cr.arrivalsite=ct.sitekey and cr.calltypekey=ct.calltypekey
left join sites s on cr.arrivalsite=s.sitekey
where cd.datakey="key1"
group by site, queue
дает следующий результат:
site queue average count
MSK <No queue assigned> 3.00 4
MSK Sales 2.00 1
MSK Service 3.63 32
В результате может быть до 6 строк. Задача - переформатировать вывод для приложения, использующего SQL для извлечения данных. Это приложение может отправлять только одну команду SQL и может обрабатывать только одну строку. Поэтому результат SQL должен выглядеть следующим образом:
site1 queue1 average1 count1 site2 queue2 average2 count2 ...
MSK Sales 2.00 1 MSK Service 3.63 32
Также важно, чтобы каждая очередь всегда отображалась в тот же столбец; если данных нет, столбец должен быть пустым, нулевым или нулевым. Я нашел несколько примеров для MS SQL, но они не работают в Informix.