С точки зрения синтаксиса , вложенное условие if-else записано неправильно, поскольку необходимо убедиться, что все возможные выходные данные должны иметь одинаковый тип данных, также вы не упомянули последние " else "условие:
ISNULL(UpdatedDateODS) ? EntryDateODS : (ISNULL(EntryDateODS) ? CreatedDateODS :
(ISNULL(CreatedDateODS) ? GETDATE() : **<missing>** ))
С логическая перспектива , выражение может вызвать исключение, так как вы используете столбец EntryDateODS
, если ISNULL(UpdatedDateODS)
истинно, тогда как вы должны проверить, EntryDateODS
не является нулевым, прежде чем использовать его, я предлагаю следующее выражение:
ISNULL(UpdatedDateODS) ? UpdatedDateODS : (ISNULL(EntryDateODS) ? EntryDateODS :
(ISNULL(CreatedDateODS) ? CreatedDateODS : GETDATE() ))
Как упоминалось выше, если UpdatedDateODS
, EntryDateODS
, CreatedDateODS
и GETDATE()
Не используйте тот же тип данных , тогда вы должны привести к унифицированному типу данных, например:
ISNULL(UpdatedDateODS) ? (DT_DATE)UpdatedDateODS : (ISNULL(EntryDateODS) ? (DT_DATE)EntryDateODS :
(ISNULL(CreatedDateODS) ? (DT_DATE)CreatedDateODS : (DT_DATE)GETDATE() ))