0

有人可以帮我为以下查询生成 SOQL。出现此错误 - 不支持嵌套半连接子选择

SELECT External_ID_vod__c, FirstName, LastName, Middle_vod__c  
FROM Account
where Id IN (select Account_vod__c from EM_Attendee_vod__c WHERE Id IN (SELECT  Incurred_Expense_Attendee_vod__c
FROM Expense_Header_vod__c 
where CALENDAR_YEAR(CreatedDate) > 2020 and Status_vod__c = 'Paid_in_Full_vod'))
4

1 回答 1

0

是的,使用 WHERE 子句,您可以将相关列表“向下”仅 1 级,看起来您需要 2 级。

几个想法。

你能分两步做吗?首先select Account_vod__c from EM_Attendee_vod__c...,然后将结果传递给第二个查询。

看看您是否可以通过使用汇总汇总字段来消除某个级别- 但在这种情况下可能会很棘手,可能无法汇总 2020 年的所有付款。

看看你是否可以运行一个接近你需要的报告(即使它只抓取这些Account_vod__c),你可以使用“报告快照” - 将报告的中间结果保存在帮助程序自定义对象中。这样可以更容易查询。

看看你是否可以通过 "up" 来运行查询。例如Account_vod__c是一个真正的查找/主详细信息,您可以尝试使用类似的东西

select Account_vod__r.External_ID_vod__c, Account_vod__r.FirstName, Account_vod__r.LastName, Account_vod__r.Middle_vod__c
from EM_Attendee_vod__c
WHERE Id IN (SELECT  Incurred_Expense_Attendee_vod__c
FROM Expense_Header_vod__c 
where CALENDAR_YEAR(CreatedDate) > 2020 and Status_vod__c = 'Paid_in_Full_vod')

这并不完美,如果他们有多个与会者,它会给你重复的帐户,但它可以工作得很好。在紧要关头,您总是可以尝试使用 a 对其进行重复数据删除GROUP BY Account_vod__r.External_ID_vod__c, Account_vod__r.FirstName, Account_vod__r.LastName, Account_vod__r.Middle_vod__c(尽管 GROUP BY 不喜欢超过 200 个结果……如果您希望最多有 2K 个帐户,则可以使用 LIMIT + OFFSET作弊)

于 2022-02-28T09:36:23.833 回答