如何使用 SQL 获得连续日期之间的最大差异

How to get Maximum Difference between Dates in a row using SQL

Date 1 Date 2 Date 3 Date 4 LineCount Month_Gap
2020-01-01 2019-10-01 2019-09-06 1
2020-01-01 2019-10-01 2019-09-13 2019-09-06 2 0
2020-01-01 2019-10-01 2019-08-13 2019-09-06 2 1

如果 LineCount 为 1,则 Month_Gap 应该是 (Date1 & Date3) 和 (Date2 & Date3) 之间的最大月份差。 Date3 将始终在 Date1 和 Date2 之间。

在这种情况下,输出应该是 (2020/01/01 - 2019/09/06) 和 (2019/10/01 - 2019/09/06) 之间的最大月份差,即 3 个月:

Date 1 Date 2 Date 3 Date 4 LineCount Month_Gap
2020-01-01 2019-10-01 2019-09-06 1 3
2020-01-01 2019-10-01 2019-09-13 2019-09-06 2 0
2020-01-01 2019-10-01 2019-08-13 2019-09-06 2 1

我正在尝试这样的事情,但不确定如何去做 - CASE WHEN LineCount = 1 THEN MAX(DATE_DIFF(.....),我猜这是行不通的。

您应该使用的模式是

SELECT TIMESTAMPDIFF("MONTH", LEAST(date1,date2,date3,date4), GREATEST(date1,date2,date3,date4)) as `maximum_difference`;

这将简单地浏览您的列,找到最小和最大的,然后 return 结果。

    SELECT 
    CASE WHEN LineCount = 1 THEN GREATEST(DATE_DIFF('month', Date3, Date1), 
    DATE_DIFF('month', Date3, Date2)) END AS Month_Gap