2015-12-30 3 views
-1

Мне нужно показать комиссионные за каждую запись. У меня есть 13000 записей. Мне нужно отображать сборы 100 + 300 + 500 = 900. Поэтому я использовал функцию Список агрегатный при использовании списка Aggregate я должен дать заказ на (синтаксических) это влияет на мой производительности запросов Мой запрос нижеКак улучшить производительность Oracle Query при использовании функции ListAggregate

SELECT 
    (SELECT REPLACE(ListAgg(amount,',')within groupby(
    ORDER BY Auditcomptranid),',','+') 
    ||'= 
    ||SUM(amount)AS Fees 
    FROM Audit_comp_trans 
    WHERE Audit_comp_trans.SSU_ID=SSU_Request.SSU_ID 
    AND Audit_comp_trans.Aucompid= SSU_Request.Aucompid 
) 
FROM SSU_Request 
INNER JOIN comp_infromation 
ORDER BY SSU_ID DESC 

ответ

0

Я бы предложил разделить задачу на два этапа.

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

Для второго шага форматирование формулы вы можете использовать функцию ListAgg, но вы должны следовать за syntax rules. В приведенном ниже примере показано использование:

with tab as (
-- your query here 
-- providing the group column and fee column 
select group_id, fee .... 

) 
select group_id, 
listagg(fee,' + ') within group (order by fee) || 
' = ' || sum(fee) as fees 
from tab 
group by group_id 
+0

Это работает, но когда я добавляю Сортировать по производительности запросов идет вниз Пожалуйста, предложите мне –

+0

@MaheshwaranRagunathan нет такого понятия, как общая помощь с проблемами производительности. Вам нужно будет посмотреть [план выполнения] (http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_9010.htm#SQLRF01601) и получить базовое понимание разницы между получением первого строка из несортированного и отсортированного источника строки (это может быть ваш случай) –

Смежные вопросы