cte查询不返回任何结果

fzsnzjdm  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(266)

以下查询工作正常

select TOP 100 T.DWH_ID,T.date_time, T.TimeDiff, T.[End Date], T.SPS_Bereich, T.txtName from (  
SELECT sto.[DWH_ID]
      ,sto.[SPS_Bereich]
      ,FORMAT(sto.[DateTime], 'dd-MM-yyyy HH:mm') as date_time
      ,sto.[txtName]
      ,sto.[TimeDiff]
      , DATEADD(second,sto.[TimeDiff],FORMAT(sto.[DateTime], 'dd-MM-yyyy HH:mm'))as [End Date]
  FROM [Stoerdaten].[sta].[Stoerungen]  sto where sto.Classname='Alarm' and sto.TimeDiff>60 ) as T

  join  [IgnitionServer].[dbo].[scheduled_events_ISTProduction] cal on 

  ((T.date_time between cal.start_date and cal.end_date) and T.[End Date] between cal.start_date and cal.end_date) where cal.typ=1 order by [DWH_ID] desc

但是当我换成cte的时候,它没有给我任何结果。
cte查询

;with q1 as 
  (
  select TOP 1000 [DWH_ID], 
  SPS_Bereich ,
  FORMAT([DateTime], 'dd-MM-yyyy HH:mm') as date_time,
   [txtName],
    [TimeDiff]
    , DATEADD(second,[TimeDiff],FORMAT([DateTime], 'dd-MM-yyyy HH:mm'))as [End_Date]
  FROM [Stoerdaten].[sta].[Stoerungen] where Classname='Alarm' and TimeDiff>60 
  )

  select q1.DWH_ID,
  q1.date_time, 
  q1.TimeDiff, q1.[End_Date], q1.txtName, q1.SPS_Bereich   from  q1 join [IgnitionServer].[dbo].[scheduled_events_ISTProduction] cal on 
  ((q1.date_time between cal.start_date and cal.end_date) and q1.[End_Date] between cal.start_date and cal.end_date)  where cal.typ=1

我不明白我在这里错过了什么。非常感谢您的帮助。

xzlaal3s

xzlaal3s1#

您的cte包含的前1000条记录 [sta].[Stoerungen]WHERE 然后你从那加入到 [scheduled_events_ISTProduction] .
在您的初始查询中,您将在连接完成后返回前100名,因此我认为cte结果中出现的任何内容都无法连接到中的记录 [scheduled_events_ISTProduction] .
如果您只是从您的cte中选择了所有内容,您应该会看到其中有多达1000条记录,但也应该能够验证连接问题。

相关问题