【问题标题】:Use of top over the subquery with order by inside the subquery在子查询中使用带有 order by 的子查询 top
【发布时间】:2015-02-01 21:04:15
【问题描述】:
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。

我想在子查询中使用子查询的顶部,这可能吗...

【问题讨论】:

  • 请发布您的查询以及示例数据和所需结果。
  • 使用 row_number() over ( order by col) 代替
  • 添加了基于top(1) 用法和dbo 前缀的sql-server 标签。

标签: sql sql-server tsql


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多