当前位置: 首页 > 知识库问答 >
问题:

Jasper ireport查询设计

终洛华
2023-03-14
id (pk)       town          bananas          orange          cherry 
1            boston           5                 0              11              
2            paris            100               18             12              
3            bucharest        10                3              9
4            barcelona        9                 4              12              

我需要对用户选择的所有水果进行求和,并绘制图表。

例如,当用户同时选择“香蕉”和“橘子”时,结果将是

              town          result  
1            boston           5 
2            paris            118 
3            bucharest        13 
4            barcelona        13 

问题是:

              town          result  
1            boston           bananas+orange 
2            paris            bananas+orange
3            bucharest        bananas+orange
4            barcelona        bananas+orange

共有1个答案

包承望
2023-03-14

您可以根据用户指定的输入参数动态创建以下查询(使用存储过程)。然后存储过程将成为JRXML中的数据源。

select id, town, sum(bananas) + sum(oranges) as result from fruits group by town

我现在觉得这很乱。

另一种方法是对FRUIT_SALES表重新因数,如下所示

CREATE TABLE "SEEDY_FOODS"."FRUIT_SALES"
  (
    "ID"            NUMBER NOT NULL ENABLE,
    "TOWN"          VARCHAR2(20 BYTE) NOT NULL ENABLE,
    "FRUIT_TYPE_ID" NUMBER,
    "QTY_SOLD"      NUMBER NOT NULL ENABLE,
    CONSTRAINT "FRUIT_SALES_PK" PRIMARY KEY ("ID") 
  )
FRUIT_SALES
 ID TOWN    FRUIT_TYPE_ID  SALES
 1  boston  1              5
 2  boston  2              0
 3  boston  3              11
 4  paris   1              100
 5  paris   2              18
 6  paris   3              12
CREATE TABLE "SEEDY_FOODS"."FRUIT_TYPES"
  (
    "ID"   NUMBER NOT NULL ENABLE,
    "NAME" VARCHAR2(20 BYTE)
  )
FRUIT_TYPE
 ID NAME
 1  bananas
 2  orange
 3  cherry
select town, sum(qty_sold)
from fruit_sales
where $X{IN,FRUIT_TYPE_ID,COUNTED_FRUIT_TYPES}
group by town

这里,我们使用JasperReports特性$x{IN, , } 来只选择那些满足参数$p{COUNTED_FRUIT_TYPES}中指定的fruit标准的行,该参数的类型为java.util.collection

以下是JXRML的开始

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" 
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
              xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" 
              name="FruitSalesByTown" 
              language="groovy" pageWidth="595" pageHeight="842" columnWidth="535" 
              leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" 
              uuid="9cc45ae0-15a8-4f13-8e02-b0a4379f7019">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
 :
 :
snip style tags 
 :
 :
    <parameter name="COUNTED_FRUIT_TYPES" class="java.util.Collection"/>
    <queryString>
        <![CDATA[select town, sum(qty_sold)
from fruit_sales
where $X{IN,FRUIT_TYPE_ID,COUNTED_FRUIT_TYPES}
group by town]]>
    </queryString>

(参考《贾斯珀报告终极指南》第80页)

 类似资料:
  • 这是一个相当初级的问题,但我对此有点犹豫不决。假设我有一个类a,它有方法method1、method2、method3、method4和一个main方法。 method2仅由Method1调用;method4仅由Method3调用。 解决方案说从main调用method1,从main调用method2,与method3和4相同。 所以让main方法显式调用method1和method2不是很糟糕吗

  • 问题内容: 我正在建立MS Access 2007中数据库的查询,并且想知道我当前的设计实践是否达到标准。基本上,数据库是在我来之前配置的,但是我被赋予构建高效查询以提取数据的责任。 我当前的查询既小又简单,每个查询一次完成2-3个任务(有时只有1个)。之所以采用这种方法,是因为我对SQL完全陌生,并且发现与许多简单的查询一起使用并使用报告来合并数据比较容易,而与构建极其复杂的查询相对较容易,后者

  • 问题内容: 我在我的项目中使用log4j2和slf4j并使用maven进行构建。我正在使用以下pom文件(仅显示了相关依赖项),但是我在此pom文件的下面复制了错误- 我需要添加/删除所有内容才能使其正常工作。我已经访问了错误中的url以及log4j2依赖项页面,因此请不要仅仅指向响应中的URL。 信息: pom文件 更新: 我在pom文件中添加了以下依赖项,并且在mavenrepository中

  • 我正在使用Spring框架。使用NamedParameterJdbcTemplate时,如何设置查询超时?我注意到JdbcTemplate有一个setQueryTimeout(int queryTimeout)方法,但我还没有找到一种使用NamedParameterJdbcTemplate实现这一点的方法。它有一个getJdbcOperations()方法,但似乎没有公开setQueryTimeo

  • 问题内容: 我需要为我的可定制搜索界面(正在编写的Web应用程序)在Java中实现查询对象模式。 有人知道我可以从哪里获得查询对象模式的示例/教程(马丁·福勒的QoP)吗? 提前致谢 附加 如何将查询模式添加到现有DAO模式? 问题答案: “查询对象模式”中的单词“模式”放错了位置(IMHO)。这不是真正的设计模式。“查询对象”只是解释器模式的另一个示例。遗留的Hibernate Criteria

  • 我有如下所示的ES文档: 我需要一个搜索(或多个搜索)的以下答案 将来有的文档数(例如>现在) 将来有检查的文档数(例如>现在) 未来7天的日期直方图(日细分),包含当天具有的文档数 未来7天的日期直方图(日细分),包含当天的文档数 所以,我正试图找出如何有效地得到这些答案。我知道我可以/应该测试所有不同的方法,但我对ES相对来说是新手,所以说起来容易做起来难。 有人能给我一个建议(或者理想情况下