【问题标题】:How to query multiple SUMs into multiple columns of the same SQL query in iReport?如何在 iReport 中将多个 SUM 查询到同一 SQL 查询的多个列中?
【发布时间】: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


    【解决方案1】:

    我觉得很好。没有笛卡尔积,也没有违反单值规则。

    其他通用性能建议也适用。从优化器获取报告以确保您正确使用索引。

    考虑复合索引是否有帮助(例如军队:wargame_idarmy_key)。

    考虑覆盖索引(例如士兵:army_keydeadtype_idachievement)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 2016-11-08
      • 2015-06-30
      相关资源
      最近更新 更多