递归 SQL (CTE)

时间:2021-02-26 06:26:58

标签: sql sql-server

我想编写一个 SQL 查询,其中表具有链接的 OriginalDocket、Docket、DiversionDocket 字段

Declare @DespatchFrom date = '02-01-2021' 

select OriginalDocket, Docket, DiversionDocket 
from trans 
where DespatchDateTime >= @DespatchFrom
and originaldocket <> '' 
and DiversionDocket <> '' 

enter image description here

上面我想写的像

enter image description here

第二张图片的代码:

select t.OriginalDocket, t.Docket, t.DiversionDocket, t2.DiversionDocket as DiversionDocket2
from trans t, trans t2
where t.DespatchDateTime >= @DespatchFrom
and t.originaldocket <> '' 
and t.DiversionDocket <> '' 
and t2.OriginalDocket = t.DiversionDocket
and t2.diversiondocket <> ''

1 个答案:

答案 0 :(得分:0)

试试这个查询:

select 
    inner.OriginalDocket,
    outer.OriginalDocket, 
    inner.DiversionDocket, 
    outer.DiversionDocket as DiversionDocket2
from
    docketTable as inner
join
    docketTable as outer on inner.Docket = outer.OriginalDocket
where
    inner.DespatchDateTime >= @DespatchFrom
    and inner.originaldocket <> '' 
    and inner.DiversionDocket <> ''