Упорядочивание и ограничение подзапроса в Salesforce SOQL

Я пытаюсь получить владельца дела на основе частичного совпадения, при этом мы выбираем самый последний случай, который соответствует частичному совпадению.

Это запрос, который я пытаюсь выполнить:

SELECT User.CustomField__c 
FROM User 
WHERE User.Id IN (
    SELECT OwnerId 
    FROM Case 
    WHERE Case.CaseNumber LIKE '%1026' 
    ORDER BY Case.CreatedDate DESC LIMIT 1)

Следующий запрос работает сам по себе, но не выглядит удовлетворительным как часть подзапроса:

SELECT OwnerId 
FROM Case 
WHERE Case.CaseNumber LIKE '%1026' 
ORDER BY Case.CreatedDate DESC LIMIT 1

Точно так же, если я отброшу ORDER BY и LIMIT это работает:

SELECT User.NVMContactWorld__NVM_Agent_Id__c 
FROM User 
WHERE User.Id IN (
    SELECT OwnerId FROM Case 
    WHERE Case.CaseNumber LIKE '%1026')

Разрешены ли запросы порядка / ограничения в подзапросе SOQL?

Чтобы прояснить эту проблему, сценарий, с которым я имею дело, выглядит следующим образом ...

Организация Salesforce может настроить «формат отображения» для номеров обращений. Если они выберут «4» цифры, вы получите номера наблюдений, например:

  • 0001
  • 0125
  • 1234
  • 33456

Можно изменить конфигурацию номеров дел, чтобы получить следующие номера наблюдений а также номера дел выше ...

  • 000001
  • 001234
  • 033456

Я не хотел, чтобы люди были сбиты с толку заявлением LIKE , проблема состоит в том, что 001234 и 1234 - это разные случаи, поэтому, если клиент предоставляет 1234, и я нахожу две записи, я хочу начать с предположения, что это самый последний случай.

Так что рассмотрите либо оператор LIKE , либо оператор IN , содержащий ('001234', '1234')

6
задан Fenton 17 November 2011 в 15:54
поделиться