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

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

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

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

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

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

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


person Andreas Pedersen    schedule 12.10.2020    source источник
comment
Привет, Андреас! Для получения дополнительных разъяснений по вашей проблеме я предполагаю, что вы хотите обновить __ / 12/2020 (дата рождения) до 10/12/2020 (дата рождения), потому что ваш (дата рождения 2) содержит 10/12 / 2020 для этого пользователя, верно?   -  person Asheesh Sahu    schedule 14.10.2020
comment
Привет, Ашиш, да, ты прав. В то же время я хочу убедиться, что я не перезаписываю некоторые из уже заполненных полей в (дата рождения), когда я обновляю столбец на основе (дата рождения 2). Подскажите, если что-то непонятно. Спасибо за уделенное время.   -  person Andreas Pedersen    schedule 16.10.2020
comment
Привет, Андреас! Спасибо за разъяснения, еще одна вещь, которую я хочу спросить, это то, какой тип данных вы используете, это Date или DateTime.   -  person Asheesh Sahu    schedule 16.10.2020
comment
Привет, Ашиш, Хороший вопрос. Мы используем тип данных Date, а не DateTime.   -  person Andreas Pedersen    schedule 16.10.2020
comment
Привет, Андреас! Пожалуйста, поправьте меня, если я ошибаюсь, если ваше поле (дата рождения) является типом даты, тогда как оно может хранить пустое значение дня, месяца или года, оно должно вызывать исключение. Я предполагаю, что ваше поле (дата рождения) либо имеет значение, либо нет.   -  person Asheesh Sahu    schedule 16.10.2020
comment
Привет, Ашиш, извини, я неправильно понял твой вопрос. (Дата рождения) либо содержит пустые значения, либо полные даты, например, 12.10.2020. Я хочу обновить пустые значения данными из столбца (дата рождения 2), где даты хранятся в виде строки типа данных. При обновлении пустых значений до дат в (дата рождения) я хочу убедиться, что даты не заменяются пустыми значениями в (дата рождения 2), поэтому я хочу обновить только пустые значения в (дата рождение).   -  person Andreas Pedersen    schedule 17.10.2020


Ответы (1)


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

SELECT (дата рождения), (дата рождения 2) FROM objectName WHERE (дата рождения) = NULL AND (дата рождения 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;
person Asheesh Sahu    schedule 18.10.2020
comment
Привет, Ашиш! Похоже, код Apex запускает SOQL (поправьте меня, если я ошибаюсь), однако я не могу выполнять Apex в Automation Studio в SFMC. Либо я могу использовать SOQL, либо (на стороне сервера) Javascript - ›возможно ли выполнить такое действие исключительно с использованием SOQL (активность SQL) или Javascript (активность скрипта)? - person Andreas Pedersen; 20.10.2020