Oracle Pivot查询比较列

时间:2014-02-26 21:11:42

标签: sql oracle oracle11g pivot oracle-sqldeveloper

我的Oracle技能生硬了不管怎么说我有以下Oracle Query支持并提供我需要的东西但是我需要比较最后两列。这是查询:

SELECT * FROM (select * 
FROM (select TO_ENTITY_ID, END_DATE_DAY_ID, EASSIGNMENT_ID from ENTITY_eassignment WHERE TO_ENTITY_ID IN  (11466248, 993051,993037))
PIVOT (MAX(END_DATE_DAY_ID) AS t FOR (EASSIGNMENT_ID) in (1, 1002)));

最终返回3行3列

TO_ENTITY_ID    1_T     1002_T     
993037          29220   29220      
11466248        29220   16126      
993051          15255   16004   

我需要做的是在这里添加第4列,如果它们是相同的值则比较最后两列,那么第4列应该是真/假。

TO_ENTITY_ID    1_T     1002_T  SAME_VALUE     
993037          29220   29220   TRUE
11466248        29220   16126   FALSE   
993051          15255   16004   FALSE

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

(CASE WHEN "1_T" = "1002_T"
      THEN 'TRUE'
      ELSE 'FALSE'
  END)
外部查询中的

应该有效。那是

SELECT to_entity_id,
       "1_T",
       "1002_T",
       (CASE WHEN "1_T" = "1002_T"
             THEN 'TRUE'
             ELSE 'FALSE'
         END)
  FROM( <<your existing query>> )

如果您想过滤

SELECT to_entity_id,
       "1_T",
       "1002_T",
       (CASE WHEN "1_T" = "1002_T"
             THEN 'TRUE'
             ELSE 'FALSE'
         END)
  FROM( <<your existing query>> )
 WHERE "1_T" = "1002_T" -- (or !=)