Эта команда выборки СМЕЩЕНИЯ проходит проверку, но не дает результатов?

#sql #sql-server #salesforce-marketing-cloud

#sql #sql-server #salesforce-маркетинг-облако

Вопрос:

Мне нужно подключить учетные записи к пользователям, и при этом я должен убедиться, что я выбираю правильную учетную запись для обеспечения соответствия требованиям, и сделать это с несколькими учетными записями. Следующий код проходит проверку, но не дает результатов.

У меня уже есть список номеров клиентов в таблице, которые являются PK.


 SELECT
x.CustomerNumber,
a.ACC_AccountId

FROM Eligibles x

LEFT JOIN
    ACCOUNTS a
    ON x.CustomerNumber = a.ACC_CustomerNumber
    ORDER BY a.ACC_LIVEcode ASC,
         a.ACC_Limit DESC,
         a.ACC_Amount DESC
    OFFSET 0 ROWS
    FETCH FIRST 1 ROWS ONLY
  

Я не получаю никаких идентификаторов учетной записи для заполнения, тогда как почти у всех должен быть один.

Ответ №1:

При сортировке по возрастанию NULL s являются первыми. Итак, сначала вы обнаруживаете несоответствия. Вместо этого добавьте выражение, чтобы совпадения были первыми:

 SELECT x.CustomerNumber, a.ACC_AccountId
FROM Eligibles x LEFT JOIN
     ACCOUNTS a
     ON x.CustomerNumber = a.ACC_CustomerNumber
ORDER BY (CASE WHEN ACC_CustomerNumber IS NOT NULL THEN 1 ELSE 0 END),
         aa.ACC_LIVEcode ASC, a.ACC_Limit DESC, a.ACC_Amount DESC
OFFSET 0 ROWS
FETCH FIRST 1 ROWS ONLY
  

Комментарии:

1. Спасибо, я попробовал это, но безуспешно. Я должен также упомянуть, что в этом случае нет нулевых значений, и LiveCode отображает статус этой учетной записи в диапазоне от 1 (Активный) до 9 (неактивный)

2. @Waystone . . . NULL Значения берутся из LEFT JOIN .