【问题标题】:Recursive SQL (CTE)递归 SQL (CTE)
【发布时间】:2021-02-26 06:26:58
【问题描述】:

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

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

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

以上我想写出来的样子

第二张图片的代码:

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

【问题讨论】:

  • 请不要使用图像作为数据,使用格式化文本。
  • 进化——不要使用old-style joins
  • 您的问题是什么?你有什么问题吗(除了在FROM 子句中令人震惊地使用,)?

标签: sql sql-server


【解决方案1】:

试试这个查询:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2012-04-23
    • 2014-05-19
    • 2017-01-02
    相关资源
    最近更新 更多