我有这张桌子:
Date | TV Show | Begin | End |
===================================================
12/3/14 |GameofThrones| 11:00 | 11:55 |
12/3/14 | Breaking Bad| 12:00 | 12:45 |
12/3/14 | Scrubs | 12:46 | 13:15 |
12/3/14 | Scrubs | 13:16 | 13:59 |
12/3/14 | Breaking Bad| 14:00 | 15:00 |
12/2/14 | Breaking Bad | 15:00 | 16:00 |
12/3/14 |GameofThrones| 17:00 | 18:00 |
12/3/14 |GameofThrones| 18:00 | 19:00 |
12/3/14 | Scrubs | 19:00 | 20:00 |
好吧......我的问题是:如何只选择任何给定电视节目的第一个和第二个条目?
示例:
12/3/14 | Breaking Bad| 12:00 | 12:45 |
12/3/14 | Breaking Bad| 14:00 | 15:00 |
我不知道。
答案 0 :(得分:2)
仅限一个电视节目,请使用TOP
关键字来限制结果数量。您可以使用ORDER BY
子句对条目进行排序,使用WHERE
子句来过滤结果集。
对于所有电视节目,您可以使用Common Table Expression
。
当然,您可以使用任何WHERE
条件来过滤内部查询的结果集。
WITH cte (
SELECT
ROW_NUMBER() OVER (PARTITION BY [TV Show] ORDER BY [Date] ASC, [Begin] ASC) AS RowNum
[Date], [TV Show], [Begin], [End]
FROM
TVShows
)
SELECT
[Date], [TV Show], [Begin], [End]
FROM
cte
WHERE
RowNum < 3
答案 1 :(得分:0)
您正在寻找的是
SELECT TOP 2 *
FROM TVSHOWS
WHERE [TV SHOW] = 'Game of Thrones'
ORDER BY [DATE]
您可能希望按查询排序或分组以过滤您的需求,但TOP N
完全符合您的要求。