У меня есть следующие столбцы в таблице Продажи:
Category1,priceA,priceB,Category2,costA,costB,type.(some items in category1 are same as category2)
sum(priceA), sum(priceB)
должны быть сгруппированы по категории 1, тип.
sum(costA), sum(costB)
должны быть сгруппированы по категории 2, тип.
Мне нужен конечный результат как
Объединение (категория 1, категория 2) как категория 3, сумма (цена A) + сумма (стоимость A), сумма (цена B) + сумма (стоимость B), тип для группировкиСОЕДИНЕНИЕ (категория1 + категория2), тип.
(сумма (цена A) + сумма (стоимость A) будет происходить всякий раз, когда элементы в категории 1 соответствуют категории 2, и то же самое относится к сумме (цена B) + сумма (стоимость B))
Я пытался сделатьэто на
select category1,sum(priceA),sum(priceB),type group by category1,type
UNION ALL
select category2,sum(costA),sum(costB),type group by category2,type
Затем следите за этим с другой суммой и группируйте по.Но я хочу знать, как это сделать без отдельного выбора и избежания объединения в основном двух таблиц.Могу ли я использовать группу, за которой следует оператор case?На самом деле таблица, которую я назвал продажами, является внутренним объединением нескольких таблиц, поэтому мотивация не использовать select для нее по отдельности в двух случаях (в моем случае это было бы объединение 4 запросов на выборку в таблице, что заставляет запрос выглядеть действительнобольшой тоже).Плюс у меня нет разрешения на создание процедуры, поэтому нет PL / SQL.Есть какой-нибудь причудливый способ для вышеуказанной ситуации, который сократит запрос и улучшит производительность?
РЕДАКТИРОВАТЬ - ОБРАЗЕЦ ДАННЫХ (Категория1, ЦенаA, ЦенаB, Категория2, CostA, CostB, Тип)
+-----+----+----+-----+----+----+---+
| AUS | 20 | 25 | UK | 35 | 40 | X |
| UK | 30 | 26 | SA | 32 | 40 | Y |
| USA | 22 | 24 | NZ | 38 | 36 | Z |
| BRA | 16 | 10 | USA | 25 | 25 | Z |
| RUS | 20 | 15 | UK | 20 | 30 | X |
+-----+----+----+-----+----+----+---+
Который я разделил на объединение двух таблиц:
+-----+----+----+---+
| AUS | 20 | 25 | X |
| UK | 30 | 26 | Y |
| USA | 22 | 24 | Z |
| BRA | 16 | 10 | Z |
| RUS | 20 | 15 | X |
+-----+----+----+---+
И
+-----+----+----+---+
| UK | 55 | 70 | X |
| SA | 33 | 40 | Y |
| NZ | 38 | 36 | Z |
| USA | 25 | 25 | Z |
+-----+----+----+---+
Конечный результат будет выглядеть так:
+-----+----+----+---+
| UK | 55 | 70 | X |
| UK | 30 | 26 | Y |
| NZ | 38 | 36 | Z |
| USA | 47 | 49 | Z |
| AUS | 20 | 25 | X |
| SA | 32 | 40 | Y |
| BRA | 16 | 10 | Z |
| RUS | 20 | 15 | X |
+-----+----+----+---+