UNION 与ORDER BY 结合出错
测试数据如下
/*
select 1 as CurMonth,GETDATE() as CurDay INTO TEST_DISP
delete TEST_DISP
insert TEST_DISP values(11,'2003-11-01')
insert TEST_DISP values(12,'2003-12-01')
insert TEST_DISP values(1,'2004-1-01')
insert TEST_DISP values(2,'2004-2-01')
insert TEST_DISP values(3,'2004-3-01')
insert TEST_DISP values(4,'2004-4-01')
insert TEST_DISP values(5,'2004-5-01')
Select * from TEST_DISP
*/
我的查询要求是: 将2003年最后一天和2004年的记录按时间顺序输出:
我的做法如下
select s.* from
(SELECT top 1 CurMonth,CurDay FROM TEST_DISP where CurDay< '2004-01-01' order by CurDay desc
UNION
SELECT CurMonth,CurDay FROM TEST_DISP where CurDay>= '2004-01-01' ) s order by CurDay
结果发现,2003年的记录总是2003-11-01那条,也就是order by CurDay desc没起作用,
实际不用排序或用order by CurDay 结果是一样,总是11月那条,为什么为这样?
如何实现这个查询? 前提是不需要中间表