Присоединение к подзапросу с использованием столбца внешнего запроса - PullRequest
0 голосов
/ 04 февраля 2020

Это мой запрос на присоединение:

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.

Мне нужно присоединиться к моему запросу как подзапросу. Есть идеи как это исправить?

1 Ответ

3 голосов
/ 04 февраля 2020

Присоединенный подзапрос не может ссылаться на столбец из внешнего запроса, поэтому вы получаете ошибку. Я думаю, что вы должны использовать 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
...