You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SAP HANA中按ID分组计算不同行的日期间隔天数

计算分组ID的日期差解决方案

原始数据表:

ID Date
1  29/11/23
1  16/10/23
2  28/1/23
2  20/1/23

SQL 实现

MySQL/MariaDB

如果需要按ID分组自动计算日期差(默认取最大日期减最小日期):

SELECT 
    ID,
    DATEDIFF(
        STR_TO_DATE(MAX(Date), '%d/%m/%y'),
        STR_TO_DATE(MIN(Date), '%d/%m/%y')
    ) AS date_diff
FROM date_table
GROUP BY ID;

如果需要指定具体日期的计算顺序(比如ID1用29/11/23减16/10/23,ID2用20/1/23减28/1/23):

SELECT
    DISTINCT ID,
    CASE
        WHEN ID = 1 THEN DATEDIFF(STR_TO_DATE('29/11/23', '%d/%m/%y'), STR_TO_DATE('16/10/23', '%d/%m/%y'))
        WHEN ID = 2 THEN DATEDIFF(STR_TO_DATE('20/1/23', '%d/%m/%y'), STR_TO_DATE('28/1/23', '%d/%m/%y'))
    END AS date_diff
FROM date_table;

PostgreSQL

PostgreSQL支持直接用日期减法运算:

SELECT
    DISTINCT ID,
    CASE
        WHEN ID = 1 THEN TO_DATE('29/11/23', 'DD/MM/YY') - TO_DATE('16/10/23', 'DD/MM/YY')
        WHEN ID = 2 THEN TO_DATE('20/1/23', 'DD/MM/YY') - TO_DATE('28/1/23', 'DD/MM/YY')
    END AS date_diff
FROM date_table;

Excel 实现

假设数据位于A1:B5区域(A列为ID,B列为日期):

  1. 手动计算指定日期差:

    • ID1的日期差:=DATE(2023,11,29)-DATE(2023,10,16),结果为44天
    • ID2的日期差:=DATE(2023,1,20)-DATE(2023,1,28),结果为**-8天**
  2. 自动按ID分组计算:
    若使用Excel 365,用BYROW和UNIQUE函数批量处理:

    =BYROW(UNIQUE(A2:A5),LAMBDA(x,MAXIFS(B2:B5,A2:A5,x)-MINIFS(B2:B5,A2:A5,x)))
    

    旧版Excel可使用数组公式(输入后按Ctrl+Shift+Enter):

    =INDEX(MAXIFS(B:B,A:A,UNIQUE(A2:A5))-MINIFS(B:B,A:A,UNIQUE(A2:A5)),0,0)
    

内容的提问来源于stack exchange,提问作者Harold Choi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:30:18