如何在 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 BY
和 ROLLUP
:
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;
虽然 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)
我有一个显示名称和值并按名称排序的数据集。
如何在 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 BY
和 ROLLUP
:
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;
虽然 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)