2015-06-11 3 views
0

Я работаю над своим проектом, и мне нужно создать запрос sql для достижения моих целей. но, к сожалению, я получаю сообщение об ошибке при выполнении запроса.ROW_NUMBER() Sql error

вот мой Sql запрос:

select ROW_NUMBER() 
OVER (ORDER BY Advertisement.AdsDate asc) AS AdsIndex 
,Advertisement.AdsId , Advertisement.AdsEnTitle from Advertisement 
where Advertisement.Status=N'True' and AdsIndex<=17 and AdsIndex>=11 

Ошибка:

Неверное имя столбца 'AdsIndex'.

Как я могу решить свою проблему?

ответ

1

вы не можете получить Ровно в ИНЕКЕ. вы должны КТР или подзапрос или

with cte as 
(
select ROW_NUMBER() 
OVER (ORDER BY Advertisement.AdsDate asc) AS AdsIndex 
,Advertisement.AdsId , Advertisement.AdsEnTitle from Advertisement 
where Advertisement.Status=N'True' 
) 

select * from cte where AdsIndex between 11 and 17 
1

Использование подзапроса:

;with cte as(
      select ROW_NUMBER() OVER (ORDER BY AdsDate asc) AS AdsIndex, 
        AdsId, 
        AdsEnTitle 
      from Advertisement 
      where Status=N'True') 
select * from cte 
where AdsIndex<=17 and AdsIndex>=11 

Или:

select * from (select ROW_NUMBER() OVER (ORDER BY AdsDate asc) AS AdsIndex, 
        AdsId, 
        AdsEnTitle 
       from Advertisement 
       where Status=N'True') as cte 
where AdsIndex<=17 and AdsIndex>=11 
+0

он говорит: мульти-часть идентификатор «cte.Status» не могут быть связаны! –

+0

@curiousdog, см. Правки –

+0

Это то, о чем я говорю. отлично –