, , @Siyual, . , 7 . TOP(7). , TOP ROW_NUMBER, .
WITH
CTE_Prev
AS
(
SELECT TOP(7) [Date], Price
FROM T
WHERE [Date] < '2014-02-01'
ORDER BY [Date] DESC
)
,CTE_Curr
AS
(
SELECT [Date], Price
FROM T
WHERE [Date] >= '2014-02-01'
)
SELECT [Date], Price
FROM CTE_Prev
UNION ALL
SELECT [Date], Price
FROM CTE_Curr
;
CREATE NONCLUSTERED INDEX [IX_Date] ON [dbo].[T]
(
[Date] ASC
)
INCLUDE ([Price])
:

ROW_NUMBER :

, 7 , .
, , . . . , .


700.000 2014-02-01:
CREATE TABLE T
([Date] datetime, [Price] numeric)
;
GO
INSERT INTO T ([Date], [Price]) VALUES
('2014-01-23 00:00:00', 10269.389648),
('2014-01-24 00:00:00', 10034.44043),
('2014-01-27 00:00:00', 9981.349609),
('2014-01-28 00:00:00', 10066.839844),
('2014-01-29 00:00:00', 9962.919922),
('2014-01-30 00:00:00', 10048.69043),
('2014-01-31 00:00:00', 9967.650391),
('2014-02-03 00:00:00', 9741.580078),
('2014-02-04 00:00:00', 9816.969727),
('2014-02-05 00:00:00', 9809.030273),
('2014-02-06 00:00:00', 9940.219727),
('2014-02-07 00:00:00', 10055.339844),
('2014-02-10 00:00:00', 10050.400391);
GO
INSERT INTO T ([Date], [Price]) VALUES
('2013-01-23 00:00:00', 10269.389648),
('2013-01-24 00:00:00', 10034.44043),
('2013-01-27 00:00:00', 9981.349609),
('2013-01-28 00:00:00', 10066.839844),
('2013-01-29 00:00:00', 9962.919922),
('2013-01-30 00:00:00', 10048.69043),
('2013-01-31 00:00:00', 9967.650391);
GO 100000