我正在使用Birt Designer 4.4+和BIRT 3.2.23引擎。我将我的报告附加到SQLServer数据源,并完成了大部分报告。我有一份报告的摘要部分,看起来像下面的部分......
Date Range | Category 1 | Category 2
--------------------------------------
At Start | 203 | 19
At End | 111 | 29
Open During | 23 | 04
我需要创建一个饼图来显示类别1与其他类别的百分比。我的问题是BIRT饼图只允许我根据特定列的左列(日期范围)显示数据(例如,我可以将日期范围与类别1进行比较。它不允许您比较说 - 值第1类对第2类的结尾。注意,在这个例子中,我只对日期范围结束时的比较感兴趣。
我决定尝试创建一个新的数据源,只查询'末尾'的值,但是留下的SQL选择与此类似。
Date Range | Category 1 | Category 2
-----------------------------------------
At End | 101 | 29
我想在轴上交换它看起来与此类似......
Date Range | At End
-----------------------
Category 1 | 101
Category 2 | 29
我调查了一些支点,但它似乎不适用于我的具体情况,因为我有类似于下面的查询。对此主题的任何建议表示赞赏。如果我不必更改我的数据集,也欢迎BIRT中的任何变通方法。看起来它可能是BIRT后期版本中的一个选项,但遗憾的是我目前无法选择更新。
原始数据集
SELECT
SUM(
CASE WHEN itc.category_id=1230 THEN 1
ELSE 0 END
) AS cAtEnd,
SUM(
CASE WHEN (itc.category_id=1233 OR itc.category_id=1234) THEN 1
ELSE 0 END
) AS rAtEnd,
SUM(
CASE WHEN (itc.category_id=1235 OR itc.category_id=1236) THEN 1
ELSE 0 END
) AS aAtEnd
FROM
i
JOIN
itc ON itc.i_id=i.id AND itc.category_id IN (1230, 1233, 1234, 1235, 1236)
我应该注意到我大大缩短了SQL - 所以如果看起来有些东西丢失了,很可能是因为我把它剪掉了(或者为了简单而更改了名称等等)。虽然基本的想法仍然相同。
除此之外 - 我的问题在本质上与此处发现的问题非常相似:https://www.eclipse.org/forums/index.php/t/62398/
答案 0 :(得分:0)
我最终找到了一种更简单的方法来创建所需的结果 - 请注意我仍然会对此处的任何其他解决方案感兴趣(可能是较短的解决方案或没有那么多问题的解决方案)。
创建一个新数据集,只需UNION ALL即可创建所需的行。由于我的数据集只涉及3行,所以也不算太糟糕。
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active" runat="server" id="liQuestions" href="#questions" role="tab" data-toggle="tab">
<asp:Button runat="server" ID="btnQuestions" />
</li>
<li role="presentation" class="active" runat="server" id="liComments" href="#comments" role="tab" data-toggle="tab">
<asp:Button runat="server" ID="btnComments" />
</li>
<li role="presentation" class="active" runat="server" id="liAttachments" href="#attachments" role="tab" data-toggle="tab">
<asp:Button runat="server" ID="btnAttachments" />
</li>
<li role="presentation" class="active" runat="server" id="liTracking" href="#tracking" role="tab" data-toggle="tab">
<asp:Button runat="server" ID="btnTracking" />
</li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="questions">
<asp:LinkButton runat="server" ID="lbQuestions" CausesValidation="false"></asp:LinkButton>
</div>
<div role="tabpanel" class="tab-pane" id="comments">
<asp:LinkButton runat="server" ID="lbComments" OnClick="lbComments_Click"></asp:LinkButton>
</div>
<div role="tabpanel" class="tab-pane" id="attachments">
</div>
<div role="tabpanel" class="tab-pane" id="tracking">
</div>
</div>
这将创建所需的SQL结果集,可以在BIRT报告上以常规方式使用。
我真的希望我没有理由过分复杂化。