【问题标题】:Minus values from the same column来自同一列的减值
【发布时间】:2022-01-20 20:05:44
【问题描述】:

我有一张有 2 列的表格。一个包含用户的 ID,另一个包含该用户登录应用程序时的日期时间。

我想创建一个自定义计算,其中 同一列中的日期时间值相互减去,因为最新的日期时间将减去该最新日期时间的前一个日期时间,并一直这样直到该用户的首次登录日期时间。

现在我不知道如何编写这个计算,所以我真的需要你的帮助,非常感谢。

样品日期:

【问题讨论】:

  • 如果你能展示出你想要的东西,了解你的要求会更好
  • 你也在用什么 DBMS
  • 能否将您的示例数据粘贴为文本?图片不是很有帮助。

标签: sql datetime


【解决方案1】:

我在 AdventureWorks 数据库中摆弄了一下,可能已经找到了一种方法来获得您正在寻找的东西(尽管我对此并不陌生,所以有更多经验和知识的人可能会有更好的主意)。但希望这提供了一些起点。我用 Row_Number 创建了 2 个 CTE,第二个 CTE 有 Row_Number-1 作为计数。然后加入这两个 CTE 并在 event_datetimes 上进行 datediff。

WITH Example_CTE (Row, UserID, Event_datetime)
AS
(
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Row
,UserID
,Event_datetime
FROM table
ORDER BY UserID,Event_datetime DESC
)
,
Example_CTE2 (Row, UserID, Event_datetime)
AS
(
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL))-1 AS Row
,UserID
,Event_datetime
FROM table
ORDER BY UserID, Event_datetime DESC
)

SELECT Example_CTE.UserID
,DATEDIFF(day, Example_CTE.Event_datetime, Example_CTE2.Event_datetime) as TimeDiff
FROM Example_CTE 
left outer join Example_CTE2 on Example_CTE.row = Example_CTE2.Row

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多