为每个符号选择前2个价格

时间:2014-12-26 15:19:02

标签: sql sql-server

我想抓住下表中每个符号的最近两个价格

如果我只想要最近的价格 “选择不同的符号,价格从table_1开始按日期,时间排序”

得到两个最近的价格让我有点卡住

CREATE TABLE [dbo].[Table_1](
[symbol] [nchar](15) NOT NULL,
[price] [float] NULL,
[date] [date] NOT NULL,
[time] [time](7) NOT NULL,
) ON [PRIMARY]

2 个答案:

答案 0 :(得分:4)

在SQL Server中,您可以使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by symbol order by date desc, time desc) as seqnum
      from table_1 t
     ) t
where seqnum <= 2;

作为一个说明。要获得最新价格,您将执行:

select distinct symbol, price
from table_1
order by date, time;

这会产生语法错误,因为datetime不在select子句中。如果您删除了order by,则只需获取所有不同symbol / price对的列表。

答案 1 :(得分:0)

select top 2 symbol, price from table_1 order by date, time怎么样?