【发布时间】:2009-09-23 04:16:48
【问题描述】:
这样有效吗?如何改进?
我试图根据条件从一组列中获取数据到两组列中。我尝试的所有方法都以多行结束。
这与this other question 非常相似,但更复杂一些。
这是我所做的: (因为这是针对 iReport/JasperReports 的,所以使用多个查询会很麻烦。)基本上,我们希望从两个表格中获取生活友好和非友好士兵的统计数据,用于军队战争游戏练习。
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
【问题讨论】:
标签: sql jasper-reports ireport