gpt4 book ai didi

SQL - 获取三个表之间两行之间的日期差异

转载 作者:行者123 更新时间:2023-12-02 03:15:37 25 4
gpt4 key购买 nike

我搜索了论坛,但找不到合适的解决方案。

我有两个包含以下信息的表:

-表A-

   Id   |   Created
11111 | 2016-01-01
22222 | 2016-02-02
33333 | 2016-03-03

-表B-

   Id   |   Created   |   Comment   
11111 | 2016-01-01 | Blah Blah Blah
11111 | 2016-01-02 | Blah Blah Blah
11111 | 2016-01-15 | Blah Blah Blah
11111 | 2016-01-17 | Blah Blah Blah
22222 | 2016-02-02 | Blah Blah Blah
22222 | 2016-02-05 | Blah Blah Blah
22222 | 2016-02-09 | Blah Blah Blah
33333 | 2016-03-03 | Blah Blah Blah
33333 | 2016-03-14 | Blah Blah Blah

TableA 是主表(它有一大堆其他字段,但重要的是 ID 和创建日期字段),而 TableB 是一个与 TableA 绑定(bind)的注释表。

我要做的是计算 TableB 中两行之间的时间差,然后隔离创建记录的第一行。我认为最好的方法是使用 TableA 提供确定的创建日期,并在我获得所有计算出的时间差后以某种方式将其用于 TableB。

我已经为 TableB 写了一个合理的查询来给我计算出的日期差异:

SELECT C1.Id,
C1.Created,
MIN(C2.Created) AS Created2,
DATEDIFF(C1.Created, MIN(C2.Created) AS DaysDiff
FROM TableB C1
LEFT JOIN TableB C2
ON C1.Id = C2.Id
AND C2.Created > C1.Created
GROUP BY C1.Id, C1.Created

-查询表B-

   Id   |   Created   |  Created2   |    DaysDiff
11111 | 2016-01-01 | 2016-01-02 | 1
11111 | 2016-01-02 | 2016-01-15 | 13
11111 | 2016-01-15 | 2016-01-17 | 2
11111 | 2016-01-17 | |
22222 | 2016-02-02 | 2016-02-05 | 3
22222 | 2016-02-05 | 2016-02-09 | 4
22222 | 2016-02-09 | |
33333 | 2016-03-03 | 2016-03-14 | 11
33333 | 2016-03-14 | |

但我需要更进一步,只获取最早的 Created 记录,所以它看起来像这样:

   Id   |   Created   |  Created2   |    DaysDiff
11111 | 2016-01-01 | 2016-01-02 | 1
22222 | 2016-02-02 | 2016-02-05 | 3
33333 | 2016-03-03 | 2016-03-14 | 11

我很确定我需要在这里再做一个 JOIN,但是我所做的任何 JOIN 通常都以没有记录结束,或者我只得到 Id 和 Created 列而没有其他任何东西。

感谢您的帮助!

最佳答案

要获得预期结果,您应该使用:

SELECT C1.Id,
C1.Created,
MIN(C2.Created) AS Created2,
DATEDIFF(C1.Created, MIN(C2.Created)) AS DaysDiff
FROM (select id, min(created) created from TableB group by id) C1
JOIN TableB C2
ON C1.Id = C2.Id
AND C2.Created > C1.Created
GROUP BY C1.Id, C1.Created
;

一开始,我认为临时 C1 表应该是 tableA,而不是 subquery select min(created) from tableB。如果是这样,则更改该行:FROM (....) C1From tableA C1

关于SQL - 获取三个表之间两行之间的日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37222360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com