打印每页的销售额而不是总销售额
printing quantity of sales per page not overall quantity of sales
所以我正在制作一份关于enclipse的birt报告我的目标是在每页上输出给定人员的销售额,而不是该人员的总销售额。
考虑一下这张表(考虑一下我们只有一个人(:
personID sales date
------- ----- -----
111 10 2010-02-02
111 15 2010-02-03
111 5 2010-03-03
111 7 2010-04-03
111 8 2011-01-01
111 9 2013-01-01
111 20 2014-01-01
111 25 2014-03-02
每页上的场景:
- 它显示了3个结果(我想要(
- 但在每一页下面都显示99次销售(我不想要(
我想要的是:
在第一页上显示了30次销售(3行(
在第二页上显示了24次销售(3行(
最后一页显示45(对于剩余的2行(
我所做的是(我不知道它的方法是否正确(:
DENSE_RANK() OVER (ORDER BY sales) AS Row,
convert(integer,ROW_NUMBER() over(order by sales)/4) as page
将我的表格变成
personID sales date Row page
------- ----- ----- ---- ----
111 10 2010-02-02 1 0
111 15 2010-02-03 2 0
111 5 2010-03-03 3 0
111 7 2010-04-03 4 1
111 8 2011-01-01 5 1
111 9 2013-01-01 6 1
111 20 2014-01-01 7 1
111 25 2014-03-02 8 2
正如你所看到的,还有另一个问题是:
前3行得到页面(0(
但是第4-5-6-7行得到了第1页,这是错误的,它应该是第4-5-6行的第1页
第7-8行第2页
我也在使用JavaScript 处理eclipse
<method name="onPageEnd"><![CDATA[var sales = this.getInstancesByElementName("sales");
var tmp=0;
if( sales != null )
{
for(var i=0; i< sales.length; i++ )
{
for(var j=0;j<3;j++)
{
//Instance of DataItemInstance
var sales = sales[i];
tmp+=parseInt(sales.getValue());
}
}
}
查询结果正确后,应根据页面计算SUM(销售额(。这可以通过SQL(Oracle SQL语法(来完成
with x as
(
your_query_here
)
select x.*,
sum(sales) over (partition by page) -- IIRC
from x
或者使用BIRT,如果您在(布局(表中创建一个GROUP(例如称为"页面"(,并基于该组创建聚合列绑定。
现在转到查询本身:我不认为DB实际上显示了您在查询中声明的结果。可能"行"在您的查询中被定义为
DENSE_RANK() OVER (ORDER BY "date" AS "Row"
我经常在"SQL中的矩阵报告"之类的地方使用这样的东西(如果你想要3行/页(。这是一个强大的SQL解决方案:
with
y as (
select ...,
ROW_NUMBER() over(order by "sales") partition by ("personID") - 1 as "Row"
-- Note: Row is zero-based: 0,1,2,...
),
x as (
select y.*,
MOD(y."Row", 3) + 1 as "RowOnPage"
trunc(y."Row"/3) + 1 as "Page"
from y
)
select x.*,
sum("sales") over (partition by "personId", "Page") as SumSalesPerPersonAndPage
-- IIRC
from x
这可能不太正确(因为我不知道你打算如何处理不同的人(,但你明白了。。。
对于创建报告,了解分析函数是一大优势。
我通常在BIRT之外测试我的查询(例如使用SQL*Developer(。
相关文章:
- 使用javascript将动态表从一个html页面打印到另一个html页
- JavaScript打印功能使日历停止工作
- esri javascript异步打印
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- jQuery/JavaScript在线公文包表单-打印样式表
- 如何打印嵌套对象的所有值
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 打印预览没有应用程序页眉和页脚的html表格
- 正在打印图表上的文本
- Rhino打印功能
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 如何用javascript打印php数组
- Javascript,从静态函数中打印全局对象
- 试图打印/调用/或提醒数组中的对象:Getting Undefined
- 按压“;输入“;将值打印到控制台日志
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- Javascript未按预期打印变量
- 如何以异步方式打印q中的项目
- 打印每页的销售额而不是总销售额