我想要一个简单的查询来解决这个问题。
我们有一个包含4列的简单表,用于合并客户端数据。我们必须创建一个循环来遍历数据,直到在FromClient行中找不到ToClient。我们有一个人已经被合并了5次。
FromClient# ToClient# Userid Timestamp
1 2
2 3
3 4
4 5
5 6
7 8 我想要的是创建一个如下所示的表,因此它是一个简单的报表连接。
FromClient# ToClient#
1 6
2 6
3 6
4 6
5 6
7 8任何指针都会很棒。
谢谢。
发布于 2019-09-07 15:26:26
尝试使用递归公用表表达式(RCTE):
with
mytab (FromClient#, ToClient#) as
(
values
(1, 2)
, (2, 3)
, (3, 4)
, (4, 5)
, (5, 6)
, (7, 8)
)
, t (FromClient#, ToClient#) as
(
select FromClient#, ToClient#
from mytab a
where not exists (select 1 from mytab b where b.FromClient# = a.ToClient#)
union all
select a.FromClient#, t.ToClient#
from t, mytab a
where a.ToClient# = t.FromClient#
)
select *
from t
order by FromClient#;https://stackoverflow.com/questions/57828870
复制相似问题