小编典典

选择group by子句中的前n行

sql

我具有类似于以下内容的架构:

create table bar
(
    instrument varchar(255) not null,
    bar_dttm datetime not null,
    bar_open int not null,
    bar_close int not null
)

我想查询该表,并返回每种仪器的最新5行。

我可以逐个仪器地执行以下操作:

select top 5 instrument, bar_dttm, bar_open, bar_close
from bar
where instrument = 'XXX'
order by bar_dttm desc

我想一次查询所有仪器。这可能吗?我正在运行SQL Server 2008。


阅读 173

收藏
2021-03-17

共1个答案

小编典典

交叉应用是您通常的操作方式-http: //msdn.microsoft.com/zh-
cn/library/ms175156.aspx

编辑-添加示例,如下所示:

select
    bar1.instrument
    ,bar2.*
from (
    select distinct instrument from bar) as bar1
cross apply (
    select top 5
        bar2.instrument
        ,bar2.bar_dttm
        ,bar2.bar_open
        ,bar2.bar_close 
    from bar as bar2 where bar2.instrument = bar1.instrument) as bar2

通常,您希望在此添加订单。

编辑-为查询添加了不同的内容,希望可以为您提供所需的信息。编辑-在顶部添加了缺少的“选择”关键字。复制并粘贴错误FTL!

2021-03-17