BIRT报告图表数据集不匹配

时间:2016-01-06 17:49:33

标签: sql-server charts birt

我正在使用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/

1 个答案:

答案 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报告上以常规方式使用。

我真的希望我没有理由过分复杂化。