以下查询工作正常
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
我不明白我在这里错过了什么。非常感谢您的帮助。
1条答案
按热度按时间xzlaal3s1#
您的cte包含的前1000条记录
[sta].[Stoerungen]
与WHERE
然后你从那加入到[scheduled_events_ISTProduction]
.在您的初始查询中,您将在连接完成后返回前100名,因此我认为cte结果中出现的任何内容都无法连接到中的记录
[scheduled_events_ISTProduction]
.如果您只是从您的cte中选择了所有内容,您应该会看到其中有多达1000条记录,但也应该能够验证连接问题。