cwui 2024-12-11 15:54 采纳率: 43.3%
浏览 56
已结题

SAP HANA SQL 增加合计行

如下图

img

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

怎么写SQL ?

  • 写回答

33条回答 默认 最新

  • 阿里嘎多学长 2024-12-11 15:55
    关注
    获得0.15元问题酬金

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    SAP HANA SQL 增加合计行

    你需要在 SAP HANA 中增加合计行,条件是 COMPPLANT 值发生变化时,合计行的 COMPPLANT 值保持与上一行相同。

    可以使用以下 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 子句用于过滤合计行,确保 COMPPLANT 值与上一行相同。

    请注意,LAG 函数用于获取前一行的值,PARTITION BY 子句用于分区数据,ORDER BY 子句用于指定分区顺序。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 创建了问题 12月11日