使用外部查询的列连接子查询
Joining subquery using a column of outer query
这是我的加入查询:
Select *
From MetricAlertMonitorings maa
Left Join (
Select Top 1 *
From [dbo].MetricAlertMonitoringsDeliveredLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsDeliveredLog.MetricAlertMonitoringID
Order By DeliveredDateTime asc
) mdl
ON maa.MetricAlertMonitoringID = mdl.MetricAlertMonitoringID
Left Join (
Select Top 1 *
From [dbo].MetricAlertMonitoringsAcknowledgedLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsAcknowledgedLog.MetricAlertMonitoringID
Order By MetricAlertMonitoringsStatusID asc, AcknowledgedDateTime asc
) mal
ON maa.MetricAlertMonitoringID = mal.MetricAlertMonitoringID
但是查询无法识别列 maa.MetricAlertMonitoringID
。我收到错误:
Msg 4104, Level 16, State 1, Line 7
The multi-part identifier "maa.MetricAlertMonitoringID" could not be bound.
Msg 4104, Level 16, State 1, Line 14
The multi-part identifier "maa.MetricAlertMonitoringID" could not be bound.
我需要将我的查询作为子查询加入。知道我该如何解决这个问题吗?
连接的子查询无法引用外部查询中的列,因此出现错误。我认为您应该改用 OUTER APPLY
:
Select *
From MetricAlertMonitorings maa
outer apply (
Select Top 1 *
From [dbo].MetricAlertMonitoringsDeliveredLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsDeliveredLog.MetricAlertMonitoringID
Order By DeliveredDateTime asc
) mdl
outer apply (
Select Top 1 *
From [dbo].MetricAlertMonitoringsAcknowledgedLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsAcknowledgedLog.MetricAlertMonitoringID
Order By MetricAlertMonitoringsStatusID asc, AcknowledgedDateTime asc
) mal
这是我的加入查询:
Select *
From MetricAlertMonitorings maa
Left Join (
Select Top 1 *
From [dbo].MetricAlertMonitoringsDeliveredLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsDeliveredLog.MetricAlertMonitoringID
Order By DeliveredDateTime asc
) mdl
ON maa.MetricAlertMonitoringID = mdl.MetricAlertMonitoringID
Left Join (
Select Top 1 *
From [dbo].MetricAlertMonitoringsAcknowledgedLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsAcknowledgedLog.MetricAlertMonitoringID
Order By MetricAlertMonitoringsStatusID asc, AcknowledgedDateTime asc
) mal
ON maa.MetricAlertMonitoringID = mal.MetricAlertMonitoringID
但是查询无法识别列 maa.MetricAlertMonitoringID
。我收到错误:
Msg 4104, Level 16, State 1, Line 7
The multi-part identifier "maa.MetricAlertMonitoringID" could not be bound.
Msg 4104, Level 16, State 1, Line 14
The multi-part identifier "maa.MetricAlertMonitoringID" could not be bound.
我需要将我的查询作为子查询加入。知道我该如何解决这个问题吗?
连接的子查询无法引用外部查询中的列,因此出现错误。我认为您应该改用 OUTER APPLY
:
Select *
From MetricAlertMonitorings maa
outer apply (
Select Top 1 *
From [dbo].MetricAlertMonitoringsDeliveredLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsDeliveredLog.MetricAlertMonitoringID
Order By DeliveredDateTime asc
) mdl
outer apply (
Select Top 1 *
From [dbo].MetricAlertMonitoringsAcknowledgedLog
Where maa.MetricAlertMonitoringID = [dbo].MetricAlertMonitoringsAcknowledgedLog.MetricAlertMonitoringID
Order By MetricAlertMonitoringsStatusID asc, AcknowledgedDateTime asc
) mal