除非另外还指定了 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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM