我有两个表,想要多次将它们连接在一起。父表名为Jobs,子表名为Routings. 一个Job可以拥有一个或多个Routings。我需要输出每个Job的一条记录,并与三个不同的Routings表连接。一个连接是当前数据(序列中第一个空日期值),一个是下一个(紧随当前的序列),最后一个是最后一个(被定义为该工作的最高顺序号)。
以下是我准备的一个小样本,提供了示例数据和所需的输出。它将问题简化了,只显示了Routings而不是Job表。如果我能找到更容易提取当前、下一个和最后值的方法,我就可以从那里开始。
我尝试通过多次连接来查询,但当没有下一个路由存在时,它似乎会省略结果(我需要空值)。进行左外连接并没有解决这个问题。我不确定这是因为它是SQL Server 2000还是其他原因。
以下是我准备的一个小样本,提供了示例数据和所需的输出。它将问题简化了,只显示了Routings而不是Job表。如果我能找到更容易提取当前、下一个和最后值的方法,我就可以从那里开始。
我尝试通过多次连接来查询,但当没有下一个路由存在时,它似乎会省略结果(我需要空值)。进行左外连接并没有解决这个问题。我不确定这是因为它是SQL Server 2000还是其他原因。
drop table #routing
create table #routing
(
routingId int not null primary key,
jobid int not null,
sequence int not null,
sentdate datetime
)
insert into #routing
select
1, 1, 1, '1/1/2009'
union
select
2, 1, 2, '1/2/2009'
union
select
3, 1, 3, '1/3/2009'
union
select
4, 1, 4, null
union
select
5, 1, 5, null
union
select
6, 2, 1, '1/1/2009'
union
select
7, 2, 2, '1/2/2009'
union
select
8, 2, 3, '1/3/2009'
select * from #routing
/*
Expected Result:
Two Records, one for each job
JobId, CurrentRoutingId, NextRoutingId, LastRoutingId
1 4 5 5
2 null null 8
*/