Как мне обновлять только нулевые значения в столбце с помощью SOQL?

#salesforce #soql #salesforce-marketing-cloud

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

Вопрос:

У меня возникла проблема с SOQL при выполнении запроса в Salesforce Marketing Cloud Automation Studio.

Я хочу обновить нулевые значения датами рождения пользователей в столбце с именем «дата рождения», который включает даты рождения тонны пользователей с типом данных = date.

Я хочу обновить этот столбец «дата рождения» на основе другого столбца с именем «дата рождения 2», который также включает даты рождения тонны пользователей, но вместо этого с помощью datatype = string .

Таким образом, моя цель — иметь возможность обновлять только отсутствующие поля даты в столбце «дата рождения», используя данные из столбца «дата рождения 2».

С помощью моего текущего очень простого кода (см. Изображение 1/2) я либо ничего не обновляю в расширении данных (когда добавляется столбец WHERE = NULL, см. Изображение 2), либо обновляю значения null, но также перезаписываю существующие значения даты в расширении данных (когда не добавлен столбец WHERE= NULL, см. Изображение 1). Интересно, можно ли просто обновить нулевые поля и оставить заполненные в данный момент поля?

С нетерпением жду вашего ответа и, пожалуйста, сообщите мне, если мой запрос неясен!

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

1. Привет, Андреас, для получения дополнительных разъяснений по вашей проблеме, я предполагаю, что вы хотите обновить __ / 12 / 2020 (дата рождения) до 10/12/2020 (дата рождения), потому что ваш (дата рождения 2) содержит 10/12/2020 для этого пользователя, верно?

2. Привет, Ашиш, да, вы правы. В то же время я хочу убедиться, что я не перезаписываю некоторые из уже заполненных полей в (дата рождения) при обновлении столбца на основе (дата рождения 2). Скажите мне, если что-то неясно. Спасибо, что уделили мне время.

3. Привет, Андреас, спасибо за разъяснение еще одна вещь, которую я хочу спросить, это то, какой тип данных вы используете, это Date или DateTime

4. Привет, Ашиш, хороший вопрос. Мы используем тип данных Date, а не DateTime.

5. Привет, Андреас, пожалуйста, поправьте меня, если я ошибаюсь, если ваше поле (дата рождения) имеет тип даты, тогда, как оно может хранить пустое значение дня, месяца или года, оно должно выдавать исключение. Я предполагаю, что ваше поле (дата рождения) либо имеет значение, либо нет.

Ответ №1:

Итак, я думаю, вы можете запросить объект, где ваше поле (дата рождения) равно нулю, а (дата рождения 2) не равно нулю.

ВЫБЕРИТЕ (дата рождения),(дата рождения 2) ИЗ objectName, ГДЕ (дата рождения) = NULL И (дата рождения 2) != NULL

Пожалуйста, убедитесь, что ваше поле (дата рождения 2) должно быть в формате ГГГГ-ММ-ДД.

Пример кода.

 List<objectName> li = [SELECT (date of birth),(date of birth 2) FROM objectName WHERE (date of birth) = NULL AND (date of birth 2) != NULL];
for(objectName o : li){
 (date of birth) = Date.valueOf((date of birth2));
}
update li;
  

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

1. Привет, Ашиш, это похоже на код Apex, запускающий SOQL (поправьте меня, если я ошибаюсь), однако я не могу выполнить Apex в Automation Studio в SFMC. Либо я могу использовать SOQL, либо (на стороне сервера) Javascript -> возможно ли выполнить такое действие исключительно с помощью SOQL (действие SQL) или Javascript (действие скрипта)?