gpt4 book ai didi

SQL连接2个没有关系的表

转载 作者:行者123 更新时间:2023-12-04 22:11:30 25 4
gpt4 key购买 nike

我正在尝试加入 2 张 table 。但是,这两个表没有要连接的关系或唯一标识符。

这两个表记录了相同的信息:不同网站上的事件和事件持续时间。表 A 包含事件的详细时间日志,除了它不记录网站名称。表 B(如表 A)也包含事件持续时间信息(不如 A 详细),但它记录了网站名称。两个表记录相同,但包含不同的信息。

简而言之:表A包含详细的事件持续时间,但没有网站名称,表B包含网站名称,但没有详细的事件持续时间。
所以两个表的日志信息都差不多,除了

这是我的问题:

2张 table

表A

ID|        Start    |       End       |  Key  | Value  
======================================================
1 | 2016-04-07 08:30| 2016-04-07 08:30| Busy | 12
1 | 2016-04-07 08:36| 2016-04-07 08:37| Logout| 345
1 | 2016-04-07 09:16| 2016-04-07 09:16| Login | 67
2 | 2016-04-07 08:10| 2016-04-07 08:11| Login | 45
2 | 2016-04-07 08:10| 2016-04-07 08:11| Write | 8

表B:
ID|   Website |      Date       |  
==================================
1 | A | 2016-04-07 08:32|
1 | A | 2016-04-07 08:39|
1 | B | 2016-04-07 09:17|
2 | A | 2016-04-07 08:12|
2 | A | 2016-04-07 08:14|

我正在寻找的结果:
ID|        Start    |       End       |  Key  | Value | Website |
==================================================================
1 | 2016-04-07 08:30| 2016-04-07 08:30| Busy | 12 | A |
1 | 2016-04-07 08:36| 2016-04-07 08:37| Logout| 345 | A |
1 | 2016-04-07 09:16| 2016-04-07 09:16| Login | 67 | B |
2 | 2016-04-07 08:10| 2016-04-07 08:11| Login | 45 | A |
2 | 2016-04-07 08:10| 2016-04-07 08:11| Write | 8 | A |

用户可以同时在 1 个以上的网站上进行事件。我想要的结果是用户使用过的每个网站(表 B)的事件名称 + 持续时间(值)(表 A)。
LEFT OUTER JOIN如果用户只登录了一个网站,我尝试过:
SELECT a.ID, a.STart, a.End, a.Key, a.Value, b.Website
FROM TABLE A as a
LEFT OUTER JOIN TABLE B as b
on a.ID = b.ID
WHERE b.Date BETWEEN '2016-04-07' and '2016-04-08'
AND a.Start BETWEEN '2016-04-07' and '2016-04-08'
AND b.agentid = '1'
AND website is not NULL
GROUP BY a.ID, a.Start, a.End, a.Key, a.Value, b.Website

如果用户登录到 2 个网站,则 join 的值重复,每个网站的值(但我只想要用户在该时间范围内工作过的网站)。我无法编辑这些表格(A 和 B),但我可以制作新表格。
我的问题:这可能吗,如果可能,我该怎么做?

最佳答案

outer apply可能是最简单的解决方案:

select a.*, b.website
from a outer apply
(select top 1 b.*
from b
where b.id = a.id and
b.date >= a.start
order by b.date desc
) b;

关于SQL连接2个没有关系的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36576755/

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