除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

默认情况下,如果在子查询,函数,视图中尝试去使用ORDER BY,那么可能会遇到下面的错误

除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

例如:

 

select b.ActID,a.ActName,b.总数 from act a
inner join (select g.ActID,sum(g.Num) as '总数' from ActGift_J g
group by g.ActID order by sum(g.Num) desc ) b
on a.ActId =b.ActID

 

 

原因:针对一个表的SELECT其实并不是返回一个表,而是一个游标。

解决方案:在子查询配合TOP 100 PERCENT用

select b.ActID,a.ActName,b.总数 from act a
inner join (select top 100 PERCENT g.ActID,sum(g.Num) as '总数' from ActGift_J g
group by g.ActID order by sum(g.Num) desc ) b
on a.ActId =b.ActID

 

posted @ 2017-07-06 11:23  花生打代码会头痛  阅读(17262)  评论(0)    收藏  举报