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

问题描述

我对 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