sql - 尝试解决聚合函数或 GROUP BY 子句错误时获取重复数据
问题描述
我希望能够APVM.Name
从这个查询中获取相关数据,但是我得到了错误:
"列在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。 "
当我添加APVM.Name
到GROUP 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
解决方案
如果您想在当前层次结构下看到不同的名称,请尝试将 APVM.Name 替换为 Max(APVM.Name) 或任何其他聚合。这只是一种解决方法,如果此输出在名称获取重复方面满足您的要求,则不会为任何分组聚合提供服务,只是它将是具有最大名称的分组实体的结果(主要是不同的)
推荐阅读
- go - 有没有办法在不完全禁用 gofmt 的情况下防止 gofmt 将代码函数转换为多行?
- mongodb - 如何在 mongodb 中为 Doocr 进程存储 byte[] 图像
- erlang - OTP gen_server 是否拦截收到的消息
- java - 使用流更改 ArrayList 内对象字段的值,使代码更高效
- c# - 在 razor 文件之外使用 AjaxHelper
- javascript - 如何在 CodeceptJS 帮助器中访问 WebdriverIO 元素方法?
- java - 使用 Mockito 模拟接口,因此可以由 Jackson 序列化
- c# - 拖放不适用于已编译的 EXE 文件
- clang - OpenCL 内核的 LLVM IR 到 PTX 到二进制
- javascript - 是否有一种直接的方法来检查一个简单的数组是否存在于另一个数组中