T-SQL高级选择语句
我有这张桌子:T-SQL高级选择语句,sql,sql-server,select,Sql,Sql Server,Select,我有这张桌子: 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
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 |
我不知道。你要找的是
SELECT TOP 2 *
FROM TVSHOWS
WHERE [TV SHOW] = 'Game of Thrones'
ORDER BY [DATE]
您可能希望按查询排序或分组,以根据您的需要进行筛选,但前N名恰恰符合您的需要。对于一个电视节目,请使用TOP关键字限制结果的数量。您可以使用ORDERBY子句对条目进行排序,使用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
对于所有电视节目,都可以使用公共表表达式。
当然,您可以使用任何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
@米海嗯。。。正当这是一个愚蠢的问题-@Mureinik好吧,公平地说,直到我看到那条评论后我才看……你可能想在top之后添加一些专栏,我把它归咎于LINQ。我变得懒惰,总是忘记最基本的事情