我有一个存储的过程,可以建立一个临时表并在最后执行选择。只要我不包括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,但仍然遇到相同的错误。我在这里做什么错了?
答案 0 :(得分:0)
您需要在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
答案 1 :(得分:0)
您不理解错误消息的哪一部分?所有未汇总的列应位于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