首页 > 解决方案 > 尝试解决聚合函数或 GROUP BY 子句错误时获取重复数据

问题描述

我希望能够APVM.Name从这个查询中获取相关数据,但是我得到了错误:

"列在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。 "

当我添加APVM.NameGROUP BY子句时,数据开始失去准确性。如何在APVM.Name没有此错误的情况下获取数据?先感谢您!

SELECT
    bSLHD.SL as [SL],
    APVM.Vendor as [Vendor Number],
    bSLHD.Job as [Job Number],
    JCCM.Department,
    APVM.Name
FROM
    bSLHD 
    
    INNER JOIN SLCT ON
        bSLHD.SL = SLCT.SL
        AND
        bSLHD.VendorGroup = SLCT.VendorGroup
        AND
        bSLHD.Vendor = SLCT.Vendor
        AND
        bSLHD.SLCo = SLCT.SLCo
    
    INNER JOIN APVM ON bSLHD.Vendor = APVM.Vendor
    INNER JOIN JCCM ON bSLHD.Job = JCCM.Contract AND bSLHD.JCCo = JCCM.JCCo
    
WHERE
    JCCM.Department = '10'
    
GROUP BY
    bSLHD.SL,
    APVM.Vendor,
    bSLHD.Job,
    JCCM.Department
    
HAVING
    SUM(CASE WHEN SLCT.CompCode = 'LI' THEN 1 ELSE 0 END) = 0

ORDER BY
    bSLHD.SL

标签: sqlsql-server

解决方案


如果您想在当前层次结构下看到不同的名称,请尝试将 APVM.Name 替换为 Max(APVM.Name) 或任何其他聚合。这只是一种解决方法,如果此输出在名称获取重复方面满足您的要求,则不会为任何分组聚合提供服务,只是它将是具有最大名称的分组实体的结果(主要是不同的)


推荐阅读