Salesforce(0):Salesforce的SOQL语句group-by分组的字段类型注意事项

📖摘要


在开发中,经常会group by无法对某个字段进行分组,此时就会很难受了。今天博主给大家分享–Salesforce系列(0):Salesforce的SOQL语句group-by分组的字段类型注意事项,希望大家可以绕过这个坑。

本人便踩过这个坑,这里分享一下个人的解决方案。


🌂问题

Salesforce文档在描述使用时的注意事项时GROUP BY非常简短。确定哪些字段可以分组的指导很简单:

与之关联的Field对象DescribeSObjectResult具有可分组的字段,该字段定义了是否可以在GROUP BY子句中包括该字段。

这是指向该方法的一种比较round回的方式
DescribeFieldResult.isGroupable();例如,Account.Description.getDescribe().isGroupable()**return** false

此外,该文件指出

在使用GROUP BY子句的查询中,不能使用使用__r语法的子关系表达式。

这使我们几乎不用继续研究,而不必检查我们可能希望分组的每个字段的Describe信息(在Dynamic SOQL上下文中是双重挑战)。那么,哪些字段类型实际上允许分组?最后一句是否禁止在中使用自定义关系GROUP BY

未能正确使用可分组字段会产生错误

字段“ FIELD_NAME__c”无法在查询调用中分组

事实证明,可分组性沿类型行非常清晰地分解,并带有一些有趣的细微差别。基本的SOAP类型似乎是主要的决定因素,而不是唯一的决定因素。同一SOAP类型内的某些字段在可分组性方面基于其他方面而有所不同。此外,某些公式字段可以用作分组-但您不能从其他Salesforce平台限制中天真地期望这些字段!

下面按UI类型列出类型,并在括号中列出SOAP类型。该信息来自对通过WorkbenchTooling API进行的大量字段描述的检查。


😘可分组的字段类型

  • 复选框(布尔值)
  • 电话(字符串)
  • 选择列表(字符串)
  • 电子邮件(字符串)
  • 文字(字符串)
  • 文字区域(字符串)
  • URL(字符串)
  • 数字(整数)。不包含自定义字段,仅包含SOAP类型的标准Number字段int,例如Account.NumberOfEmployees
  • 查找(编号)
  • ID(ID)
  • 日期(日期)
  • 将跨对象直接引用到可分组字段,从根对象起最多5个级别(SOQL限制),如中所示SELECT count(Id) FROM Contact GROUP BY Account.Parent.Parent.Parent.Parent.Name。定制参考和标准参考均可分组。
  • CheckboxDate类型的公式,包括跨标准和自定义关系的跨对象公式。

😭不可分组的字段类型

  • 地址复合字段
    • 如果地址组合字段的类型允许,则它们可以分组。
  • 常规和标准地理位置,以及是否定义为具有小数位,包括复合字段和组件(位置/双精度)
  • 长文本(字符串)
    富文本(字符串)
  • 自动编号(字符串)
  • 多选选择列表(字符串)
  • 数字(双精度),包括自定义数字字段,带或不带小数,且不考虑小数位数。
  • 百分比(双精度),包括带或不带小数且不考虑小数位的自定义百分比字段。
  • 货币(双精度),包括自定义“货币”字段,带或不带小数,且不考虑小数位数。
  • 汇总汇总字段(双COUNT精度),包括汇总。
  • 加密的文本字段(经典加密;字符串)
  • 日期/时间(dateTime
  • 时间(时间)
  • CheckboxDate以外的类型的公式,包括可以分组的String type

SOQL的这一方面缺乏定义使我有点无语,这表明我的原始答案是错误的:GROUP BY远比我想象的要陌生。

注意:使用GROUP BY 有很多基础技巧。

传送门:Salesforce(0):Salesforce的SOQL按group by分组


🎉最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈永佳

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值