Невозможно выполнить внутреннее объединение для выбора, недопустимый в списке выбора - PullRequest
0 голосов
/ 30 октября 2018

У меня есть сохраненная процедура, которая создает временную таблицу и выполняет выбор в конце. Он работает нормально, пока я не включил l.beskrivning, которая представляет собой таблицу, которая отображает коды стран на названия стран. Процедура действительна, но когда я ее тестирую, я получаю следующую ошибку:

Столбец 'LK.b' недопустим в списке выбора, потому что он не содержится ни в статистической функции, ни в предложении GROUP BY.

SELECT TOP 100 tmp.BuyerID, tmp.BuyerNumber, tmp.BuyerName, tmp.BuyerAddress, tmp.BuyerCountryCode, l.b
    FROM #tempGL AS tmp
    INNER JOIN LK AS l ON l.land_id LIKE tmp.BuyerCountryCode
    GROUP BY tmp.BuyerID, tmp.BuyerNumber, tmp.BuyerName, tmp.BuyerAddress, tmp.BuyerCountryCode
    ORDER BY Count(*) DESC, tmp.BuyerName

Я также попытался полностью удалить GROUP BY и ORDER BY, но все равно получаю ту же ошибку. Что я тут не так делаю?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Какую часть сообщения об ошибке вы не понимаете? Все не агрегируемые столбцы должны быть в GROUP BY:

SELECT TOP 100 t.BuyerID, t.BuyerNumber, t.BuyerName, tmp.BuyerAddress, t.BuyerCountryCode, l.beskrivning
FROM #tempGL t INNER JOIN
     LK l
     ON l.land_id LIKE t.BuyerCountryCode
GROUP BY t.BuyerID, t.BuyerNumber, t.BuyerName, t.BuyerAddress, t.BuyerCountryCode, l.beskrivning
ORDER BY Count(*) DESC, t.BuyerName
0 голосов
/ 30 октября 2018

Вы должны включить l.beskrivning в group by предложение

SELECT TOP 100 tmp.BuyerID, tmp.BuyerNumber, tmp.BuyerName, tmp.BuyerAddress, tmp.BuyerCountryCode, l.beskrivning
    FROM #tempGL AS tmp
    INNER JOIN LK AS l ON l.land_id LIKE tmp.BuyerCountryCode
    GROUP BY tmp.BuyerID, tmp.BuyerNumber, tmp.BuyerName, tmp.BuyerAddress, tmp.BuyerCountryCode,l.beskrivning
    ORDER BY Count(*) DESC, tmp.BuyerName
...