gpt4 book ai didi

mysql - SOQL:避免使用 NULL 结果计数,而是返回 0(零)

转载 作者:行者123 更新时间:2023-11-30 23:03:54 27 4
gpt4 key购买 nike

我有一个问题,我已经编写了一个查询,我需要按给定顺序返回机会计数:Name1、Name2、Name3、Name4。问题是,如果 Name2 的计数为 NULL,则查询将返回 Name1_count、Name3_count、Name4_count。

我需要确保我总是以正确的顺序获取值,如果值为 null,我需要返回 0。但它不起作用 :(

我试过:

Select Owner.Name
,IF(ISBLANK(count(id))
,0
,count(id))

from Opportunity

where CloseDate = Today
and Approved__c = true
and (Owner.Name = 'Name1'
or Owner.Name = 'Name2'
or Owner.Name = 'Name3'
or Owner.Name = 'Name4')

group by Owner.Name

最佳答案

您的查询使用了一个名为 owner 的表别名,该别名未定义。据推测,这应该是指 Opportunity,尽管这只是一个猜测。另外,当您有一个 NULL 时要得到一个 0,典型的函数是 coalesce()。我用 in 替换了复杂的 集:

Select o.Name, coalesce(count(id), 0) 
from Opportunity o
where CloseDate = Today and Approved__c = true and
o.Name in ('Name1', 'Name2', 'Name3', 'Name4')
group by o.Name ;

最后,要在输出中获取所有四个名称,您需要使用left outer join:

Select names.Name, count(o.id) as cnt
from (select 'Name1' as name union all select 'Name2' union all
select 'Name3' union all select 'Name4'
) names left outer join
Opportunity o
on names.name = o.name
where CloseDate = Today and Approved__c = true
group by names.Name ;

关于mysql - SOQL:避免使用 NULL 结果计数,而是返回 0(零),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22712624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com