首页 > 解决方案 > 如何创建一个新列,显示表中的最大日期和行中的日期之间的差异?

问题描述

我需要两列:1 列显示“日期”,另一列显示“表中的最大日期 - 行中的日期”。我一直在“datediff”列中得到一个零,并认为嵌套选择会起作用。

SELECT date, DATEDIFF(max_date, date) AS datediff
     (SELECT MAX(date) AS max_date
       FROM mytable)
FROM mytable
GROUP BY date

目前从上面的代码中得到这个错误: mismatched input '(' Expecting {, ';'}(line 2, pos 2) 最后正确的格式是:

    date    |   datediff
--------------------------
2021-08-28  |     0
2021-07-26  |     28
2021-07-23  |     31
2021-08-11  |     17

标签: sqlapache-sparkapache-spark-sqldatediff

解决方案


您可以使用解析函数 MAX() Over()

SELECT date, MAX(date) OVER() - date FROM mytable;

在 sqlfiddle 上试过这个


推荐阅读