Sql server 2008 r2 SQL Server介于和或语句之间

Sql server 2008 r2 SQL Server介于和或语句之间,sql-server-2008-r2,Sql Server 2008 R2,我想在SQL Server中使用以下两个子句: SELECT ROW_NUMBER() OVER (ORDER BY date_time ASC) AS RowNumber, <column_name1>, <column_name2>, <column_name3>, date_time from <table name> where <column name1> = 'as

我想在SQL Server中使用以下两个子句:

SELECT ROW_NUMBER() OVER (ORDER BY date_time ASC) AS RowNumber,
       <column_name1>,
       <column_name2>,
       <column_name3>, 
       date_time 
from <table name>
where <column name1> = 'assdf'  
   or RowNumber between 1 and 10
但这会产生一个错误。此查询有什么问题?

请尝试使用:


您试图在同一查询中引用RowNumber列,而不是在外部查询中引用它。试试这个:

select * from 
(
SELECT ROW_NUMBER() OVER (ORDER BY date_time ASC) AS RowNumber,
      <column_name1>,
      <column_name2>,
      <column_name3>, 
      date_time
      from <table name>
) tab
 where <column name1> = 'assdf' or
       RowNumber between 1 and 10
这会有帮助的

select * from 
   ( 
     SELECT ROW_NUMBER() OVER(ORDER BY date_time ASC)AS RN,
           <column_name1>,
           <column_name2>,
           <column_name3>,
           date_time
           from <table name>
           where  <column name1> = 'assdf'
   ) 
 where RN between 1 and 10 

作为RowNumber,我认为AS->AS RowNumber之前应该有一个空格为什么要使用Row_number,因为您需要1-10行,请从表中选择top 10*,其中class='assdf'按日期排序\u时间asc是否只需要第1到10行。。?然后从表中选择前10个*,其中,='assdf'按日期排序\u时间asc请尝试以下操作。。
SELECT  <column_name1>, 
        <column_name2>,
        <column_name3>,
        date_time FROM
        (
       SELECT ROW_NUMBER() OVER(ORDER BY date_time ASC)AS RN,
             <column_name1>,   
             <column_name2>,
             <column_name3>,
             date_time 
             from <table name>
             where  <column name1> = 'assdf'
        ) As S

WHERE RN BETWEEN 1 and 10
select * from 
(
SELECT ROW_NUMBER() OVER (ORDER BY date_time ASC) AS RowNumber,
      <column_name1>,
      <column_name2>,
      <column_name3>, 
      date_time
      from <table name>
) tab
 where <column name1> = 'assdf' or
       RowNumber between 1 and 10
select * from 
   ( 
     SELECT ROW_NUMBER() OVER(ORDER BY date_time ASC)AS RN,
           <column_name1>,
           <column_name2>,
           <column_name3>,
           date_time
           from <table name>
           where  <column name1> = 'assdf'
   ) 
 where RN between 1 and 10