默認情況下,如果在子查詢,函數,視圖中嘗試去使用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