如何在 Birt 中添加总行数?

How to add total row in Birt?

我有一个显示名称和值并按名称排序的数据集。

如何在 birt 报告中添加求和行?像这样。

    Name  |  Val
    ABC   |   3
    ABC   |   2
    ABC   |   1
    Total |   6
    DEF   |   3
    DEF   |   2
    Total |   5

我试图通过对名称列进行分组来做到这一点,但输出显示如下。

    Name  |  Val
    ABC   |   3
    ABC   |   2
    ABC   |   1
    Total |   6

    Name  |  Val
    DEF   |   3
    DEF   |   2
    Total |   5

您可以尝试 GROUP BYROLLUP:

WITH cte AS (
    SELECT Name AS OrigName, SUM(Val) AS Val,
        ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY SUM(Val) DESC) rn
    FROM yourTable
    GROUP BY ROLLUP(Name, Val)
)

SELECT
    CASE WHEN rn=1 AND OrigName IS NOT NULL THEN 'Total'
         WHEN OrigName IS NULL THEN 'Grand Total'
         ELSE OrigName END AS NAME,
    Val
FROM cte
ORDER BY
    OrigName, Val;

Demo

虽然 Tim 的回答在技术上是正确的,但您不必在 SQL 中创建此类数据,尤其是在格式化期间它不会很漂亮(您将有很多 if (name == "Total" || name == "Grand Total") 等.

BIRT 表有一个叫做 groups 的东西。你可以说你按名称分组,每个组都可以有它的页眉 and/or 页脚。您选择页脚并在那里设置总计。

您可以在这里阅读更多内容:https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.birt.doc%2Fbirt%2Fsg-DisplayTheTotalNumberOfCustomersInTheReport.html(见图 7-12)