我具有类似于以下内容的架构:
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。
交叉应用是您通常的操作方式-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!