【问题标题】:Alias in where query in SOQLSOQL 中 where 查询中的别名
【发布时间】:2020-03-03 05:28:09
【问题描述】:

我正在尝试使用 SOQL 从对象 Lead 中获取计数。 当我点击下面提到的查询时,我得到了结果。

select 'Lead' as source_table,count(*) as source_count from Lead

但是当我尝试使用此查询为where 提供条件时,它会抛出错误。

选择 'Lead' 作为 source_table,count() 作为来自 Lead 的 source_count 其中 创建日期 > 2020-02-24T09:43:51Z

我有什么遗漏的吗?

【问题讨论】:

    标签: salesforce soql salesforce-lightning salesforce-service-cloud salesforce-communities


    【解决方案1】:

    您的查询不是有效的 SOQL,您到底是在哪里做的?在真实的 Salesforce(Apex、开发者控制台、Salesforce API)中,或者您是否处理一些导入到 MSSQL 的数据副本?

    即使您的基本表单 (select 'Lead' as source_table,count(*) as source_count from Lead) 在 SOQL 中也无法解析。没有 AS 关键字,也没有虚拟列。

    最接近的是

    SELECT COUNT(Id) source_count
    FROM Lead
    WHERE CreatedDate > 2020-02-24T09:43:51Z
    

    不会有人工列带有“Lead”。如果您需要跨多个数据库表的一些键值操作,则必须在 Apex 中处理结果,也许创建一个帮助类来存储结果,也许 Map<String, Integer> 就足够了。但是,如果您将其作为 API 访问,那么更好的主意是访问专用 API

    • getUpdated REST API - 有“更新”和“删除”版本,如果你真的需要“创建”,除非你稍后以某种方式过滤掉它们,否则它并不是那么好
    • record count across multiple objects - 但它确实在表中计数,类似于设置 -> 存储使用情况。无法通过 WHERE 子句
    • 请您的 SF 管理员构建一个满足您需要的报告(您不需要详细信息,只需计数,对吗?),然后使用 Analytics API 访问结果。甚至可以即时生成报告:example

    【讨论】:

    • 我的这个查询“select 'Lead' as source_table, count(*) as source_count from Lead”工作正常,我得到 2 列,一列是 Source_table,另一列是 sink_table,我是在源表列中获得领先并在 sink_table 列中计数,但是当我在其中使用 where 条件时,它不起作用。我正在通过 Azure 数据工厂进行此查询,并希望将其加载到该表的 SQL 表中,我将有 2 列 Source_table 和 Source_count。
    • “source_table”、“sink_table”?你在做一些整合吗? Mulesoft、Informatica、Azure 数据工厂之类的?看起来你的问题不是关于 Salesforce,而是关于 MSSQL 或 Oracle SQL 或任何其他非 SF 数据库系统。您的语法在 SF 中无效。如果您有本地数据库,则必须使用它可以理解的 SQL 风格。
    • 我正在使用 azure 数据工厂和使用数据工厂从 Salesforce 获取数据,我正在对 Salesforce 云对象进行查询。
    • 您发布的查询似乎是针对恰好有 Lead 表的 SQL Server 数据库运行的,数据是从 SF 获取的。那么您需要 SQL Server 语法,而不是 SOQL(除非您只想从 SF 检索在特定日期之后创建的潜在客户)。重新标记问题,希望 SQL Server 专家能帮助您?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多