微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初学者使用计数和获取错误

如何解决初学者使用计数和获取错误

我对 sql 非常陌生.. 我有两个表.. 联系人和地址.. 试图查看联系人在哪里有多个标记为家庭的地址。

我想显示两个表中的信息,其中 ra.cv__Contact__c(地址)对于多个记录是相同的,并且记录说地址类型是家。当我删除我的计数功能行时,我确实看到了地址标记为 home 的所有记录,但是当我输入

FROM dbo.cv__Related_Address_Detail__c ra LEFT JOIN dbo.Contact c on c.Id=ra.cv__Contact__c
WHERE ra.cv__Contact__c=ra.cv__Contact__c AND ra.cv__Address_Type__c='home' 
HAVING COUNT (ra.cv__Contact__c)>1
ORDER BY ra.cv__Contact__c;``

我收到此错误

列 'dbo.cv__Related_Address_Detail__c.cv__Contact__c' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

当我添加分组依据

FROM dbo.cv__Related_Address_Detail__c ra LEFT JOIN dbo.Contact c on c.Id=ra.cv__Contact__c
WHERE ra.cv__Contact__c=ra.cv__Contact__c AND ra.cv__Address_Type__c='home' 
GROUP BY ra.cv__Contact__c
HAVING COUNT (ra.cv__Contact__c)>1
ORDER BY ra.cv__Contact__c;

我明白

列 'dbo.cv__Related_Address_Detail__c.Contact_VIS_Number__c' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。 消息 145,级别 15,状态 1,第 514 行 如果指定了 SELECT disTINCT,则 ORDER BY 项必须出现在选择列表中。

帮助

解决方法

所以它采用了几种不同的方法,但我发现问题只是我试图输出太多未聚合的字段..

所以我将我的字段括起来并进行了另一个内部连接以获得计数

SELECT c.id,COUNT(ra.id) 'Count'
FROM dbo.cv__Related_Address_Detail__c ra JOIN dbo.Contact c on 
c.Id=ra.cv__Contact__c
WHERE ra.cv__Address_Type__c='Home'
GROUP BY c.Id
Having COUNT(ra.id)>1
)prime
ON c.id=prime.Id

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。