как использовать регистр в подзапросе From в Oracle - PullRequest
0 голосов
/ 21 июня 2019
SELECT Source.par_row_id,
      max(case when Source.Changed_Column= 'End Date' then str end) as End_Date,       
      max(case when Source.Changed_Column = 'Start Date' then str end) as Start_Date
      max(case when Source.Changed_Column = 'Name' then str end) as Name,
      max(case when Source.Changed_Column = 'LastName' then str end) as LastNAme
      LISTAGG(Source.Changed_Column, ',') WITHIN GROUP (ORDER BY Source.par_row_id) as EventChanges       
from (
--from (select Source.*, 'WAS: ' || Source.old_column_value,'' || ' NOW: ' || source.new_column_value) as str
--      from Source
--    ) 


select Source.*, ('WAS: ' || TO_CHAR(TO_DATE(Source.OLD_COLUMN_VALUE,'MM/DD/YYYY HH24:MI:SS') , 'DD-MON-YYYY  HH24:MI:SS') ||
                                      ' NOW: ' || TO_CHAR(TO_DATE(Source.NEW_COLUMN_VALUE,'MM/DD/YYYY HH24:MI:SS') , 'DD-MON-YYYY  HH24:MI:SS')) as str
                  from Source
                 ) Source
            group by Source.par_row_id

Вышеприведенное работает для даты, но имя и фамилия будут проблемой.

Проблема, описанная выше, будет работать, когда дата устареет, а новое значение для других столбцов вызовет ошибку.

В этом запросе выше я получу некоторые значения в varchar, и некоторые из них мне нужно преобразовать в случае, можно ли использовать CASE где-либо здесь, я пробовал CASE в этой закомментированной строке, но она не работает.

Скрипки доступны здесь, здесь каждый может проверить рабочую среду - FIDDLER

...