如何在Oracle中的From子查询中使用案例

时间:2019-06-21 10:38:48

标签: sql oracle case oracle12c

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

0 个答案:

没有答案