SQL连接没有关系的2个表

我想加入2个表.但是,这两个表没有关联或唯一标识符要加入.

这两个表记录了相同的信息:活动和不同网站上的活动持续时间.表A包含活动的详细时间日志,除了它不记录网站名称.表B(如表A)还包含活动持续时间信息(不像A详述),但它记录了网站名称.两个表都记录相同,但包含不同的信息.

简而言之:表A包含详细的活动持续时间但没有网站名称,表B包含网站名称,但没有详细的活动持续时间.
所以两个表日志信息大致相同,除外

这是我的问题:

2个表

表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      |

用户可以同时在多个网站上进行活动.我想要的结果是用户已经处理的每个网站(表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个网站,则联接的值重复,每个网站的值(但我只想要用户在该时间范围内处理过的网站).我无法编辑这些表(A& B),但我可以创建新表.
我的问题:这是可能的,如果是这样,我该怎么做?

最佳答案 外部应用可能是最简单的解决方案:

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;
点赞