SQL Oracle 的 BIRT 报告
BIRT Report with SQL Oracle
任务是做一个简单的报告,看起来像这样:
Trees Planted (Previous Week) Quantity Weight
OAK 720 544
APPLE 150 138
PEAR 430 411
PINE 602 589
CHESTNUT 384 357
Sum: 2 286 2 039
我需要拉入不同种植事件的数据,这些数据以列表示:TREE, QTY, WEIGHT。
现在,问题(或挑战)是:
- 在 "Trees Planted" 列中,显示上周种植的树木,并按字母顺序分组。
- 将上周种植的每种树的数量相加,并将结果显示在'Quantity'列的适当行中。与 'Weight'.
相同
我想,第一点很简单:
select TREE
from TREETABLE
group by TREE
order by TREE
第二点应该是这样的:
select QTY
from TREETABLE
where SYSDATE >= next_day(trunc(sysdate), 'MONDAY') - 14
and SYSDATE < next_day(trunc(sysdate), 'MONDAY') - 7
and TREE='OAK'
但我知道,这里有问题.. 因为这样我们需要为每个单元格指定一个 TREE。让它相对于第一列链接可能会更好。还是BIRT本身有一个特性可以建立这种关系?
嗯,看起来像一个简单的"group by"查询,此时不需要BIRT进入场景。在数据集中设置这种查询就完成了:
select TREE, sum(QTY) as QTY, SUM(WEIGHT) as WEIGHT
from TREETABLE
where SYSDATE >= next_day(trunc(sysdate), 'MONDAY') - 14
and SYSDATE < next_day(trunc(sysdate), 'MONDAY') - 7
group by TREE
order by TREE
并在 BIRT 的页脚中创建总计 table
任务是做一个简单的报告,看起来像这样:
Trees Planted (Previous Week) Quantity Weight
OAK 720 544
APPLE 150 138
PEAR 430 411
PINE 602 589
CHESTNUT 384 357
Sum: 2 286 2 039
我需要拉入不同种植事件的数据,这些数据以列表示:TREE, QTY, WEIGHT。
现在,问题(或挑战)是:
- 在 "Trees Planted" 列中,显示上周种植的树木,并按字母顺序分组。
- 将上周种植的每种树的数量相加,并将结果显示在'Quantity'列的适当行中。与 'Weight'. 相同
我想,第一点很简单:
select TREE
from TREETABLE
group by TREE
order by TREE
第二点应该是这样的:
select QTY
from TREETABLE
where SYSDATE >= next_day(trunc(sysdate), 'MONDAY') - 14
and SYSDATE < next_day(trunc(sysdate), 'MONDAY') - 7
and TREE='OAK'
但我知道,这里有问题.. 因为这样我们需要为每个单元格指定一个 TREE。让它相对于第一列链接可能会更好。还是BIRT本身有一个特性可以建立这种关系?
嗯,看起来像一个简单的"group by"查询,此时不需要BIRT进入场景。在数据集中设置这种查询就完成了:
select TREE, sum(QTY) as QTY, SUM(WEIGHT) as WEIGHT
from TREETABLE
where SYSDATE >= next_day(trunc(sysdate), 'MONDAY') - 14
and SYSDATE < next_day(trunc(sysdate), 'MONDAY') - 7
group by TREE
order by TREE
并在 BIRT 的页脚中创建总计 table