默认情况下,如果在子查询,函数,视图中尝试去使用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