在子查询中使用top来查询子查询

时间:2014-12-04 04:30:47

标签: sql sql-server tsql

Select top(1) track_id 
From
(select track_id, sum(sale_amt) total 
from dbo.Track_Daily_Sales 
group by track_id 
order by total
) abc

我收到一个错误,即ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效,除非还指定了TOP或FOR XML。

我想在子查询中使用top来查看子查询,这是可能的......

1 个答案:

答案 0 :(得分:1)

对于您的具体示例,如果不考虑关系,则根本不需要子查询:

select top 1 track_id
from dbo.Track_Daily_Sales 
group by track_id 
order by sum(sale_amt)

这是一种用rank()来处理关系的方法:

select track_id
from (
  select track_id, rank() over (order by sum(sale_amt)) rn 
  from Track_Daily_Sales 
  group by track_id 
  ) t
where rn = 1