我有一个显示名称和值并按名称排序的数据集。
如何在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
答案 0 :(得分:4)
您可以尝试对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;
答案 1 :(得分:2)
尽管Tim的回答在技术上是正确的,但您不必在SQL中创建此类数据,尤其是在格式化期间它不会很漂亮(您将有很多if (name == "Total" || name == "Grand Total")
等。
BIRT表具有称为groups
的东西。您可以说您是按名称分组,每个组都可以有其页眉和/或页脚。您选择页脚并在那里设置总计。
您可以在此处了解更多信息:https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.birt.doc%2Fbirt%2Fsg-DisplayTheTotalNumberOfCustomersInTheReport.html(见图7-12)