all groups > sql server programming > november 2003 >
You're in the

sql server programming

group:

Query - interesting.


Re: Query - interesting. Ryan Waight
11/7/2003 4:26:21 PM
sql server programming:
SELECT tbl1.* FROM (
Select 'Rank' = (select count(distinct nMarks) from tblTest B Where
B.nMarks > A.nMarks) , nMarks, nId From tblTest as A) as tbl1
where tbl1.Rank BETWEEN 5 AND 8

--
HTH
Ryan Waight, MCDBA, MCSE

[quoted text, click to view]

Re: Query - interesting. Tibor Karaszi
11/7/2003 5:27:24 PM
You can always use a derived table...

SELECT Rank, nMarks, nId
FROM
(
Select
(select count(distinct nMarks) from tblTest B Where
B.nMarks > A.nMarks
) AS Rank
, nMarks
, nId
From tblTest as A
) AS t
Where Rank Between 5 and 8

--
Tibor Karaszi, SQL Server MVP
Archive at:
http://groups.google.com/groups?oi=djq&as_ugroup=microsoft.public.sqlserver


[quoted text, click to view]

Query - interesting. Prashanth
11/7/2003 9:42:13 PM
create table tblTest
(
nId int Primary key identity(1,1) not null,
sName varchar(50),
nMarks numeric(5, 2)
)

Declare @name varchar(50)
Declare @marks numeric(5, 2)

Declare @count int
set @count = 0
while(@count < 100)
Begin
set @count = @count + 1
insert tblTest values(cast(@count as varchar(12)) , rand() * 100)
End

select * from tblTest

This will create a table with a list of random data.
I want to display all the ranks between 5 and 8. along with their nId and
nMarks.


This is not all i have to use only 2 select statements.

The query below returns me all the ranks , id and marks.
Select 'Rank' = (select count(distinct nMarks) from tblTest B Where
B.nMarks > A.nMarks) , nMarks, nId From tblTest as A

but i am not able to execute
Select 'Rank' = (select count(distinct nMarks) from tblTest B Where
B.nMarks > A.nMarks) , nMarks, nId From tblTest as A
Where Rank Between 5 and 8

Fails. How do you perform an where operation on computed column.

Thanx.
PK

AddThis Social Bookmark Button