| Author |
Topic |
|
shaik.zakeer
Posting Yak Master
117 Posts |
Posted - 2009-07-20 : 07:54:23
|
| i have three tables likestudent -------stidstnameexam-------exid,exnameexamdet------exdetid,stid,exid,markshow to list down exam wise topper with the marks obtainedstname,exnamemarksThanks Zakeer Sk |
|
|
SkotCollinz
Starting Member
8 Posts |
Posted - 2009-07-20 : 08:05:35
|
| If i've understodd you correctly...select a.stname, b.exname, c.marksfrom examdet cinner join student a on c.stid = a.stidinner join exam b on c.exid = b.exidorder by c.marks desc |
 |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2009-07-20 : 23:58:27
|
[code]DECLARE @EXAMS TABLE( EXAMID int, EXAMNAME varchar(15))INSERT INTO @EXAMSSELECT 1, 'ENGLISH' UNION ALLSELECT 2, 'MATHEMATICS' UNION ALLSELECT 3, 'PHYSICS' UNION ALLSELECT 4, 'FRENCH'DECLARE @STUDENT TABLE( STID int, NAME varchar(5))INSERT INTO @STUDENTSELECT 1, 'A' UNION ALLSELECT 2, 'B' UNION ALLSELECT 3, 'C' UNION ALLSELECT 4, 'D'DECLARE @EXAMDET TABLE( EXAMDETID int, STID int, EXAMID int, MARKS int)INSERT INTO @EXAMDETSELECT 100, 1, 1, 80 UNION ALLSELECT 101, 2, 1, 80 UNION ALLSELECT 102, 3, 1, 80 UNION ALLSELECT 103, 1, 2, 70 UNION ALLSELECT 104, 2, 2, 70 UNION ALLSELECT 105, 3, 2, 75SELECT STUDENTNAME, EXAMNAME, MARKSFROM( SELECT STUDENTNAME = S.NAME, EXAMNAME = E.EXAMNAME, MARKS = D.MARKS, RANK = DENSE_RANK() OVER (PARTITION BY D.EXAMID ORDER BY D.MARKS DESC) FROM @EXAMDET D INNER JOIN @STUDENT S ON D.STID = S.STID INNER JOIN @EXAMS E ON D.EXAMID = E.EXAMID) MWHERE M.RANK = 1/*STUDENTNAME EXAMNAME MARKS ----------- --------------- ----------- A ENGLISH 80B ENGLISH 80C ENGLISH 80C MATHEMATICS 75(4 row(s) affected)*/[/code] KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2009-07-21 : 00:00:40
|
ORSELECT STUDENTNAME = S.NAME, EXAMNAME = E.EXAMNAME, MARKS = D.MARKS, RANK = DENSE_RANK() OVER (PARTITION BY D.EXAMID ORDER BY D.MARKS DESC)FROM @EXAMDET D INNER JOIN ( SELECT EXAMID, MARKS = MAX(MARKS) FROM @EXAMDET GROUP BY EXAMID, EXAMID ) M ON D.EXAMID = M.EXAMID AND D.MARKS = M.MARKS INNER JOIN @STUDENT S ON D.STID = S.STID INNER JOIN @EXAMS E ON D.EXAMID = E.EXAMID KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
|
|
|