Это эффективно? Как это можно улучшить?
Я пытался получить данные из одного набора столбцов в два набора столбцов в соответствии с условием. Все методы, которые я пробовал, заканчивались несколькими строками.
Это очень похоже на этот другой вопрос , но немного сложнее.
Вот что я сделал:
(Поскольку это для iReport / JasperReports, было бы очень сложно использовать несколько запросов.) По сути, мы хотим получить статистику по количеству живых дружелюбных и не дружелюбных солдат из двух таблиц для армейского военного игрового упражнения.
<code>
SELECT
army.army_key UNIT_NUM,
COUNT( case when soldier.type_id = 1 then 1 else NULL end ) AS friendCount,
SUM( case when soldier.type_id = 1 then soldier.achievement else 0 end ) AS friendAmount,
COUNT( case when soldier.type_id = 2 then 1 else NULL end ) AS enemyCount,
SUM( case when soldier.type_id = 2 then soldier.achievement else 0 end ) AS enemyAmount
FROM soldier, army
WHERE soldier.army_key = army.army_key
AND army.wargame_id = $P{GAME_ID}
AND soldier.dead is null
GROUP BY army.army_key
ORDER BY UNIT_NUM ASC