Oracle:按日期和ID排序

时间:2014-08-26 06:00:54

标签: sql oracle date

我有以下声明

Select * from    
((Query A)
union all
(Query B)
union all
(Query C))
order by date,id

在所有查询中都有一个

select tochar(date,'dd/mm/yyyy'), id

我的输出应先按日期排序,然后按ID排序,但我当前的输出是

01/01/2012
05/03/2012
12/02/2012

它的排序基于日期的前两位数字,那么如何按整个日期进行订购呢?

我的日期是日期,id是varchar。

2 个答案:

答案 0 :(得分:2)

您的问题是您订购了String而不是Date,因为您将所有日期列都转换为字符。使用:

order by to_date(date, 'dd/mm/yyyy'), id

答案 1 :(得分:0)

UNION需要将它们视为单个表,然后再对其进行排序。 如果UNION中的列名称不同,则只需使用ALIAS重命名它们 试试这个sql:

SELECT * FROM
(
SELECT 
       [id]      
      ,[date]      
  FROM 
       [TabellaA] 
  UNION ALL  
  SELECT
       [id]      
      ,[date]      
  FROM 
       [TabellaB]
  ) 
  AS TAB_OUTPUT  
  ORDER BY date,id