Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
T-SQL高级选择语句_Sql_Sql Server_Select - Fatal编程技术网

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。我变得懒惰,总是忘记最基本的事情