最近做一个统计报表查询,需要两个查询,一个查出统计数据,一个查出统计数据的合计,用union把两个查询结果拼成一个,但后一个查询结果却在前一个查询结果之前,不是我想要的,我想要的是无论什么情况,合计的数据始终在统计数据后面,目前我的解决方法是在第一位添一个字段,如:
SELECT ROWNUM RN,FIELD1,FIELD2 FROM TABLE1
UNION SELECT RN 10000,' ' FIELD1,SUM(FIELD2) FIELD2 FROM TABLE2
因为union默认应该按2个查询结果的第一个字段进行排序的,所以只要第一个查询结果不超过10000,就始终在第二个查询结果之前。
但这种'解决方法'也不是个真正的解决方法,实在想不出什么其他的办法了,特向高手求救!!!
SELECT ROWNUM RN,FIELD1,FIELD2 FROM TABLE1
UNION SELECT RN 10000,' ' FIELD1,SUM(FIELD2) FIELD2 FROM TABLE2
因为union默认应该按2个查询结果的第一个字段进行排序的,所以只要第一个查询结果不超过10000,就始终在第二个查询结果之前。
但这种'解决方法'也不是个真正的解决方法,实在想不出什么其他的办法了,特向高手求救!!!
FROM
(
SELECT ROWNUM RN,FIELD1,FIELD2,'1' id FROM TABLE1
UNION SELECT RN 10000,' ' FIELD1,SUM(FIELD2) FIELD2,'2' id FROM TABLE2
)
ORDER BY ID,FIELD1
UNION SELECT 2,' ' FIELD1,SUM(FIELD2) FIELD2 FROM TABLE2
order by 1;
2永远大于1,肯定会排在最后。