我有一张road_events桌子:
create table road_events (
event_id number(4,0),
road_id number(4,0),
year number(4,0),
from_meas number(10,2),
to_meas number(10,2),
total_road_length number(10,2)
);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (1,1,2020,25,50,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (2,1,2000,25,50,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (3,1,1980,0,25,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (4,1,1960,75,100,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (5,1,1940,1,100,100);
insert into road_events (event_id, road_id, …Run Code Online (Sandbox Code Playgroud) 希望我错过了一个简单的解决方案.
我有两张桌子.一个包含公司列表.第二个包含发布者列表.两者之间的映射是多对多的.我想要做的是捆绑或分组表A中与表B中的发布者有任何关系的所有公司,反之亦然.
最终结果看起来像这样(GROUPID是关键字段).第1行和第2行属于同一组,因为它们共享同一家公司.第3行位于同一组中,因为发布者Y已映射到公司A.第4行位于组中,因为公司B已通过发布者Y映射到组1.
简单地说,只要公司和发布商之间存在任何类型的共享关系,就应该将该对分配给同一组.
ROW GROUPID Company Publisher
1 1 A Y
2 1 A X
3 1 B Y
4 1 B Z
5 2 C W
6 2 C P
7 2 D W
Run Code Online (Sandbox Code Playgroud)
更新:
我的赏金版本:鉴于上面简单Company和Publisher成对的小提琴表,填充GROUPID上面的字段.可以将其视为创建Family包含所有相关父母/子女的ID.
SQL Server 2012
我有一个大数据集,为了这个问题的目的有3个字段:
在任何给定的行上,From Date总是小于To Date但在每个组内,由日期对表示的时间段(没有特定顺序)可以重叠,在一个在另一个中包含,或者甚至是相同的.
我最终想要的是一个查询,它将每个组的结果浓缩到连续的时间段.例如,一个看起来像这样的组:
| Group ID | From Date | To Date |
--------------------------------------
| A | 01/01/2012 | 12/31/2012 |
| A | 12/01/2013 | 11/30/2014 |
| A | 01/01/2015 | 12/31/2015 |
| A | 01/01/2015 | 12/31/2015 |
| A | 02/01/2015 | 03/31/2015 |
| A | 01/01/2013 | 12/31/2013 |
Run Code Online (Sandbox Code Playgroud)
会导致这个:
| Group ID | From Date | To Date |
--------------------------------------
| A | …Run Code Online (Sandbox Code Playgroud) 在我们公司,我们的客户执行各种活动,我们登录不同的表 - 访谈出勤,课程出勤和其他一般活动.我有一个数据库视图,来自所有这些表的联合数据,为我们提供了这样的ActivityView.正如您所看到的,某些活动重叠 - 例如,在参加面试时,客户可能正在执行CV更新活动.
+----------------------+---------------+---------------------+-------------------+
| activity_client_id | activity_type | activity_start_date | activity_end_date |
+----------------------+---------------+---------------------+-------------------+
| 112 | Interview | 2015-06-01 09:00 | 2015-06-01 11:00 |
| 112 | CV updating | 2015-06-01 09:30 | 2015-06-01 11:30 |
| 112 | Course | 2015-06-02 09:00 | 2015-06-02 16:00 |
| 112 | Interview | 2015-06-03 09:00 | 2015-06-03 10:00 |
+----------------------+---------------+---------------------+-------------------+
Run Code Online (Sandbox Code Playgroud)
每个客户端都有一个"注册日期",记录在客户端表上,即他们加入我们的程序时.这是我们的样本客户端:
+-----------+---------------------+
| client_id | client_sign_up_date |
+-----------+---------------------+
| 112 | 2015-05-20 |
+-----------+---------------------+
Run Code Online (Sandbox Code Playgroud)
我需要创建一个显示以下列的报告:
+-----------+---------------------+--------------------------------------------+
| client_id …Run Code Online (Sandbox Code Playgroud)