Мне нужно сформировать набор результатов в два этапа. Первый шаг прост и генерирует базовый набор результатов в памяти (назовем его B
). На втором шаге мне нужно добавить дополнительный столбец к B
(назовем его c
). Для каждой строки в B
, c
может быть вычислено с помощью агрегатной функции на B
на основе значений этой строки (хотя это выглядит неэффективно).
Окончательный набор результатов - B + c
. Результаты должны быть отсортированы по столбцу из B
, а также по столбцу c
, поэтому все это должен быть один запрос.
Получение B
просто, но как мне обработать его дальше, основываясь на его содержимом?
EDIT. Вот аналогия с таблицей, чтобы проиллюстрировать, что я подразумеваю под «применением агрегатной функции к B
на основе каждой строки в B
»:
Скажем, у нас есть таблица T
с колонкой col
. Предположим, что для каждой строки в T
мы хотим вычислить количество строк, которые имеют большее значение col
. Вы можете сделать это так:
select
t1.*,
(select sum(case when t2.col > t1.col then 1 else 0 end) from T t2) as count
from T t1
В моем случае проблема в том, что B
- это не реальная таблица, а набор результатов в памяти. Как я могу обработать его подобным образом?