применяется как выбрать из объединенной таблицы - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть хранимая процедура, в которой я не могу добавить GROUP BY.Мне нужно как-то взять количество записей из другой таблицы.Из серверной части приходят параметры фильтра (выборки) для одной таблицы, из которой я хочу получить данные о количестве записей.

SELECT cei_mot_count.cnt FROM someTable AS st
 LEFT JOIN CEI_Motivations AS cei_mot ON cei_mot.Id= st.ID    
--LEFT OUTER JOIN (SELECT Id, StayingID, COUNT(*) as cnt FROM CEI_Motivations GROUP BY Id,StayingID) as cei_mot_count ON cei_mot_count.StayingID = cei_mot.StayingID
--LEFT OUTER JOIN (SELECT Id, COUNT(cei_mot.Id) as cnt FROM cei_mot GROUP BY Id) as cei_mot_count ON cei_mot_count.Id IS NOT NULL
OUTER APPLY (SELECT COUNT(mot.Id) as cnt     
                    FROM  cei_mot as mot 
             WHERE mot.Id IS NOT NULL                    
                    GROUP BY mot.Id) as cei_mot_count

я ловлю Исключение: Неверное имя объекта 'cei_mot'

1 Ответ

0 голосов
/ 27 сентября 2019

Вы не можете использовать псевдоним таблицы из объединения внутри заявки.Я думаю, что вы хотите:

SELECT cei_mot_count.cnt FROM someTable AS st
 LEFT JOIN CEI_Motivations AS cei_mot ON cei_mot.Id= st.ID    
--LEFT OUTER JOIN (SELECT Id, StayingID, COUNT(*) as cnt FROM CEI_Motivations GROUP BY Id,StayingID) as cei_mot_count ON cei_mot_count.StayingID = cei_mot.StayingID
--LEFT OUTER JOIN (SELECT Id, COUNT(cei_mot.Id) as cnt FROM cei_mot GROUP BY Id) as cei_mot_count ON cei_mot_count.Id IS NOT NULL
OUTER APPLY (SELECT COUNT(mot.Id) as cnt     
                    FROM  CEI_Motivations as mot 
             WHERE mot.Id IS NOT NULL AND mot.Id= st.ID                    
                    GROUP BY mot.Id) as cei_mot_count

Обратите внимание, как эта версия дважды использует CEI_Motivations.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...