Sql union с компонентом агрегации

У меня есть запрос, который я использую для построения диаграмм в службах отчетов, который выглядит примерно так:

(SELECT Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Eta, Theta, Iota, Kappa, Lambda, Mu,Nu, Xi from tbl 
WHERE    
Alpha in (@Alphas) and 
Beta in (@Betas) and
Gamma in (@Gammas)  and
Delta in (@Deltas) and
Epsilon in (@Epsilons) and
Zeta in (@Zetas) and
Eta in (@Etas) and
Theta in (@Thetas) )
UNION 
(SELECT Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Eta, Theta, Iota, Kappa, Lambda, Mu,Nu, Omicron from tbl 
WHERE    
Alpha in (@Alphas) and 
Beta in (@Betas) and
Gamma in (@Gammas)  and
Delta in (@Deltas) and
Epsilon in (@Epsilons) and
Zeta in (@Zetas) and
Eta in (@Etas) and
Theta in (@Thetas))

Альфа - Тета должна использоваться в паре вычисляемых полей, которые объединяют их (например, Альфа, Бета, Гамма) в строку в одном поле. Оператор select для Omicron сгенерирует такое же количество строк, что и Xi, но на самом деле я хочу агрегировать Omicron, поэтому, если запрос Select с Xi дает 9 элементов легенды, совокупный выбор для Omicron должен создавать только один элемент легенды, потому что значения Для Omicron значения от альфа до теты не важны. Как следует структурировать запрос, чтобы я мог использовать параметры от Alpha до Theta в качестве параметров, но при этом агрегировать Omicron?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
264
2

Ответы 2

Я не уверен, что вы действительно хотите, но, если я правильно понял, вы можете попробовать что-то вроде:

(SELECT a,b,c,d FROM k
WHERE a in (@a) and b in (@b) and c in (@c))
UNION
(SELECT NULL,NULL,NULL,sum(e) FROM k
WHERE a in (@a) and b in (@b) and c in (@c) GROUP BY e)

NULL только для возможности выполнить объединение (при сохранении количества столбцов вам может потребоваться использовать псевдонимы столбцов)

Почему бы вам просто не выбрать всех греков, Си и Омикрон в одном операторе выбора и не вычислить сумму на языке хоста? Это один потенциально дорогостоящий запрос вместо двух.

Не думаю, что понимаю твой ответ. Исходные данные были выбраны напрямую, и это подготовка данных в службах отчетов перед их использованием в отчете. Как бы тогда выглядел ваш sql?

TheObserver 20.10.2008 13:40

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