Настройте запрос оракула с помощью предложения groupby

У меня есть таблица с большим количеством столбцов стоимости для каждой таблицы ключей.

SK1 SK2 Col1 Col2 Col3..... Col50 Flg(Да / Нет)


1    2    10    20   30 ...... 500  Y
1    2    10    20   30 ...... 500  N
2    2    10    20   30 ...... 500  N

Мне нужно агрегировать (сумма) всех значений, а затем проверить, есть ли какие-либо значения с Y, а затем добавить их в новую таблицу B. Здесь таблица A комбинация записей (1,2) для (sk1,sk2) должна быть возвращена.

Я написал запрос, чтобы выбрать LISR всех столбцов и добавить в качестве группы. У нас много данных, поэтому выполнение этого запроса занимает слишком много времени. Любой шанс взглянуть на это и сделать так, чтобы он стал быстрее.

выберите Sk1, Sk2, nvl(sum(col3),0), nvl(sum(col4))0, ..... nvl(sum(col50)) из группы таблиц A по Sk1, Sk2

Я использую это как часть большого запроса, где во многих других вычислениях выполняются поверх этого.

3 ответа

На данный момент я создал временную таблицу и загрузил в нее все данные.

Выяснить, содержит ли какой-либо из сгруппированных набор записей "Y", будет так же просто, как...

select   ...
from     ...
group by ...
having   max(flg) = 'Y'

Если вы используете это как часть большого запроса, вы использовали опцию WITH?

Это может быть так

WITH SUM_DATA AS (select col1, col2, nvl(sum(col3),0), nvl(sum(col4))0, ..... nvl(sum(col50)) from table A group by col1, col2)

SELECT xyz 
FROM abc, sum_data
WHERE abc.join_col = sum_data.join_col

Больше помощи здесь

Другие вопросы по тегам