0

我有一个简单的 SOQL 查询:

选择计数 (ID)、CampaignId、Campaign.Name
来自活动成员
其中 CampaignId 在 ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')
按 CampaignId、Campaign.Name 分组

查询结果带回 2 条记录,因为其中两个活动成员列表中有联系人。

我还想带回计数为 0 的第三条记录。在 SOQL 中有没有办法做到这一点,我不相信有可以在选择上使用的 ISNULL() 函数。

4

2 回答 2

2

您需要聚合查询的任何特殊原因?一种方法是使用关系,如下所示:

SELECT Id, Name, (SELECT Id FROM CampaignMembers)
FROM Campaign
WHERE Id IN ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')

稍后在代码中可以像这样访问它

List<Campaign> campaigns = [Id, Name, (SELECT Id FROM CampaignMembers)
FROM Campaign
WHERE Id IN ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')];

for(Campaign c : campaigns){
    System.debug(c.Name + ': ' + c.CampaignMembers.size());
}
于 2013-04-10T14:46:31.757 回答
0

您必须在您的 soql 查询中添加一个名为“Having”的附加部分。拥有就像一个 Where 子句

select Count(ID), CampaignId, Campaign.Name 
from CampaignMember 
where CampaignId in ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')
group by CampaignId, Campaign.Name 
HAVING COUNT(ID) >0

拥有类似于 Where 子句,但 HAVING 子句仅适用于也出现在 GROUP BY 中的列。

于 2013-04-10T14:31:09.830 回答