ORACLE SQL Объединяет дату со статическим номером - PullRequest
0 голосов
/ 30 января 2019

У меня проблема с использованием функции объединения в Oracle.Я нахожусь в процессе переключения баз данных на Oracle, и у меня возникла проблема.

Это то, что я хотел бы запустить: код из исходного запроса (IBM)

,COALESCE(period_dt, CAST('01-01-1900' AS DATE)) AS PERIOD_DT

где дляв этом столбце он возвращает period_dt в столбце, но если ничего нет, ноль, 0 и т. д., возвращаемое значение в формате даты будет следующим: 01/01/1900

Я пробовал следующеепараметры:

COALESCE(TO_DATE(period_dt, 'mm/dd/yyyy'), TO_DATE('01/01/1900', 'mm/dd/yyyy')) period_dt

,case when period_dt = 0 then to_date('01-01-1900', 'mm/dd/yyyy')
  when period_dt = '' then to_date('01-01-1900', 'mm/dd/yyyy')
  when period_dt = NULL then to_date('01-01-1900', 'mm/dd/yyyy')
  else to_date(period_dt,'mm/dd/yyyy')
  END period_dt

При использовании определенных комбинаций я получил ошибки, которые варьируются от «недопустимого месяца» до «несовместимых типов данных: ожидаемая ДАТА получила НОМЕР», и поскольку я не могу запустить это в операторе выбора,я не совсем уверен, как бы это выразить в заявлении groupby.любая помощь, которую вы можете оказать, была бы полезна.

1 Ответ

0 голосов
/ 30 января 2019

В Oracle вы можете использовать литералы даты ANSI:

, COALESCE(period_dt, DATE '1900-01-01') AS PERIOD_DT

period_dt - это уже дата.Если он заполнен, вы показываете его, если он нулевой, вы показываете 1 января 1900 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...