无法对选择进行内部联接,在选择列表中无效

时间:2018-10-30 10:50:06

标签: sql sql-server group-by

我有一个存储的过程,可以建立一个临时表并在最后执行选择。只要我不包括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 :(得分: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