我有以下声明
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。
答案 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