BIRT报告设计器 - 将存储在一个表中的实际和预算数据分成列并添加差异

时间:2016-06-14 12:07:53

标签: birt

我在SQL数据库中使用以下格式的财务数据,不幸的是我不得不使用这种格式(下面是示例虚拟数据)。

enter image description here

然而,我一直在努力将其纳入BIRT报告中的以下布局。

enter image description here

我尝试创建一个数据多维数据集,其中包,流量和帐户作为维度和余额作为度量,但是它将实际PER和实际YTD彼此相邻,并且预算PER和YTD彼此相邻等等所以不是我真的需要。

我的另一个想法是创建四个新的计算列,第一个只有一个值,如果它是一行实际和每个,下一个只有它是实际和ytd等,但无法获得IF功能在计算列中工作。

有哪些选择?有人能指出我如何从这个数据结构中最好地创建上面的布局,所以我可以从那里拿走它吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我不确定你在后端使用的是什么数据库,但这就是我用SQL Server做的。

重要的一位发生在数据集中。这是我的数据集的SQL:

SELECT 
    Account, 
    Package, 
    Flow, 
    Balance
FROM data

UNION

SELECT DISTINCT
    Account, 
    'VARIANCE', 
    Flow, 
    (SELECT COALESCE(SUM(Balance),0) FROM data WHERE Account = d.Account AND Flow = d.Flow AND Package = 'ACTUAL') - (SELECT COALESCE(SUM(Balance), 0) FROM data WHERE Account = d.Account AND Flow = d.Flow AND Package = 'BUD') as Balance
FROM data d

这给了我一张表:

Table showing the data from the previous SQL statement based on the data from the original question

然后我创建了一个包含

的DataCube
  • 组/尺寸
    • 帐户
    • 流量
    • 封装
  • 摘要字段/度量
    • 余额

然后我创建了一个基于该DataCube的CrossTab报告

Showing a BIRT Report CrossTab Report based on the DataCube described before.

这会产生以下结果:

Shows the published report based on the previous CrossTab

希望这有帮助。