我有一个简单的SOQL查询:
select Count(ID), CampaignId, Campaign.Name from CampaignMember where CampaignId in ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL') group by CampaignId, Campaign.Name
由于两个广告系列成员列表中有联系人,查询结果会返回2条记录。
我还想带回计数为0的第3条记录。有没有办法在SOQL中执行此操作,我不相信有一个可以在select上使用的ISNULL()函数
答案 0 :(得分: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());
}
答案 1 :(得分:0)
您必须在名为“Having”的soql查询中添加其他部分。有一个像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中的列。