Click here to Skip to main content
15,888,733 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i wanna executed this code

SQL
SELECT *, RANK() OVER (ORDER BY td.NameRss)as myrank FROM tblData td
left join tblRss tr on td.NameRss=tr.RssAdress
where td.myrank <=10


But i have error

Msg 207, Level 16, State 1, Line 5
Invalid column name 'myrank'.

Sql server 2008 R2


how can i solve this problem ?
Posted

1 solution

You cant do that. You need to create a subquery, temp table or CTE. Please see below:

SQL
;WITH CTE
AS
(
	SELECT *, RANK() OVER (ORDER BY td.NameRss) as myrank FROM tblData td
	left join tblRss tr on td.NameRss=tr.RssAdress
)
Select *
FROM CTE
where CTE.myrank <=10


OR

SQL
select *
from 
(
	SELECT *, RANK() OVER (ORDER BY td.NameRss) as myrank FROM tblData td
	left join tblRss tr on td.NameRss=tr.RssAdress
) t
where t.myrank <=10
 
Share this answer
 
Comments
aref.bozorgmehr 22-Apr-13 17:23pm    
yes it's ok Thanks
i want to get just ten row of each rank
what can i to do?
db7uk 22-Apr-13 17:26pm    
You will need to use Partition by. http://msdn.microsoft.com/en-GB/library/ms176102.aspx
Play around with RANK and DENSE_RANK

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900