如下图

如果COMP或PLANT值发生变化 ( 不需要考虑ACCT值是否变化 ),需要在该组数据下面增加一行合计行。
该合计行要求:
COMP与上面的COMP保持一致
PLANT与上面的PLANT保持一致
ACCT变成"TOTAL"
QUAT为合计值。
怎么写SQL ?
如下图

如果COMP或PLANT值发生变化 ( 不需要考虑ACCT值是否变化 ),需要在该组数据下面增加一行合计行。
该合计行要求:
COMP与上面的COMP保持一致
PLANT与上面的PLANT保持一致
ACCT变成"TOTAL"
QUAT为合计值。
怎么写SQL ?
阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你需要在 SAP HANA 中增加合计行,条件是 COMP 或 PLANT 值发生变化时,合计行的 COMP 和 PLANT 值保持与上一行相同。
可以使用以下 SQL 语句实现:
WITH
-- 获取原始数据
data AS (
SELECT
COMP,
PLANT,
SUM(ACCT) AS ACCT_SUM
FROM
your_table
GROUP BY
COMP,
PLANT
),
-- 获取合计行
summary AS (
SELECT
COMP,
PLANT,
SUM(ACCT) AS ACCT_SUM
FROM
data
GROUP BY
COMP,
PLANT
HAVING
COMP != LAG(COMP) OVER (PARTITION BY PLANT ORDER BY COMP)
OR PLANT != LAG(PLANT) OVER (PARTITION BY COMP ORDER BY COMP)
)
SELECT
*
FROM
data
UNION ALL
SELECT
*
FROM
summary
ORDER BY
COMP,
PLANT;
这个 SQL 语句使用了 Common Table Expression (CTE) 将原始数据和合计行数据分开,然后使用 UNION ALL 将两者合并。 HAVING 子句用于过滤合计行,确保 COMP 和 PLANT 值与上一行相同。
请注意,LAG 函数用于获取前一行的值,PARTITION BY 子句用于分区数据,ORDER BY 子句用于指定分区顺序。