Так близко к тому, чтобы заставить работать большой хранимый процесс, только эта последняя проблема с CROSS APPLY. Вы можете помочь? - PullRequest
1 голос
/ 01 октября 2009

Приведенный ниже оператор sql перекрестного применения - единственная часть хранимого процесса, которую я не могу заставить работать. Ошибка говорит о том, что рядом с ключевым словом «ON» указан неправильный синтаксис

Может кто-нибудь увидеть проблему?

Оператор select работает нормально, если это вообще помогает.

CROSS APPLY (
SELECT tbrm_Votes.ArticleID, AVG(tbrm_Votes.Truth), AVG(tbrm_Votes.Relevance)
FROM tbrm_Votes
GROUP BY tbrm_Votes.ArticleID
) AS Votes(ArticleID,Truth,Relevance)
ON tbrm_Article.ArticleID = tbrm_Votes.ArticleID

Ответы [ 2 ]

3 голосов
/ 01 октября 2009

CROSS APPLY похож на CROSS JOIN в том смысле, что это декартово объединение продуктов, показывающее все комбинации всех рядов с обеих сторон.

Следовательно, в приложении CROSS отсутствует «ON».

После чего вы можете выполнить предложение WHERE в своем подзапросе? Может как то так? Однако в этом случае он в значительной степени сводит на нет GROUP BY, поэтому, вероятно, потребуется дополнительная информация о вашем запросе / таблицах.

CROSS APPLY (
SELECT tbrm_Votes.ArticleID, AVG(tbrm_Votes.Truth), AVG(tbrm_Votes.Relevance)
FROM tbrm_Votes
WHERE tbrm_Article.ArticleID = tbrm_Votes.ArticleID
GROUP BY tbrm_Votes.ArticleID
) AS Votes(ArticleID,Truth,Relevance)
1 голос
/ 01 октября 2009

cross apply - полное соединение и не требует оператора ON. Он умножает таблицу слева на таблицу Rhs

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