cwui 2025-04-10 22:54 采纳率: 43.3%
浏览 9
已结题

SAP HANA SQL 同一列相减

img


如上图,原始金额DMBTR,想要的金额是DMBTR_1
202503的DMBTR_1 = 202503的DMBTR - 202412的DMBTR = 3000 - 100 = 2900
202502的DMBTR_1 = 202502的DMBTR - 202412的DMBTR = 2000 - 100 = 1900
202501的DMBTR_1 = 202501的DMBTR - 202412的DMBTR = 1000 - 100 = 900
用SAP HANA SQL 怎么实现DMBTR_1 ?

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-04-11 05:53
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    SAP HANA SQL 实现同一列相减

    根据您的问题描述,您需要计算每个记录与特定基准记录(202412)的DMBTR差值。以下是实现这一需求的SQL解决方案:

    SELECT 
        t1.*,
        t1.DMBTR - (
            SELECT t2.DMBTR 
            FROM your_table t2 
            WHERE t2.ID = '202412'  -- 假设ID是标识列
        ) AS DMBTR_1
    FROM 
        your_table t1
    WHERE 
        t1.ID LIKE '2025%'  -- 只计算2025开头的记录
    

    说明

    1. 这个SQL查询假设您的表有一个名为ID的列来标识不同的记录(如202412, 202501等)
    2. 子查询获取基准记录(202412)的DMBTR值
    3. 主查询计算每个2025开头的记录与基准记录的差值
    4. 结果将包含原始列和计算出的DMBTR_1列

    替代方案

    如果您的表结构不同,或者需要更复杂的逻辑,也可以使用自连接:

    SELECT 
        t1.*,
        t1.DMBTR - t2.DMBTR AS DMBTR_1
    FROM 
        your_table t1
    CROSS JOIN 
        (SELECT DMBTR FROM your_table WHERE ID = '202412') t2
    WHERE 
        t1.ID LIKE '2025%'
    

    请根据您的实际表结构调整上述SQL语句中的表名和列名。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 修改了问题 4月10日
  • 创建了问题 4月10日