
Untitled
By: a guest on
Apr 29th, 2012 | syntax:
None | size: 1.61 KB | hits: 15 | expires: Never
Get first row for one group [closed]
GV | Class| SUM
GV1| L001 | 5000
GV1| L002 | 5000
GV1| L003 | 5000
GV2| L002 | 7000
GV2| L003 | 7000
GV2| L001 | 7000
GV3| L001 | 8000
GV3| L002 | 8000
GV3| L003 | 8000
select teacherid
from mytable
group by teacherid;
select teacherid, ...other cols...
from (select teacherid, ...other cols...
row_number() over (
partition by teacherid
order by classid /* or class as per edit */) as row_num
from mytable) my_derived_table
where my_derived_table.row_num = 1;
WITH T AS (
SELECT yourTable.*, ROW_NUMBER() OVER(PARTITION BY TeacherID
ORDER BY ClassID) AS RN
FROM yourTable
)
SELECT *
FROM T
WHERE RN = 1
create table #t
(
GV varchar(4),
Class varchar(4),
[SUM] int
)
insert into #t(GV, Class, [SUM])values('GV1', 'L001', 5000)
insert into #t(GV, Class, [SUM])values('GV1', 'L002', 5000)
insert into #t(GV, Class, [SUM])values('GV1', 'L003', 5000)
insert into #t(GV, Class, [SUM])values('GV2', 'L002', 7000)
insert into #t(GV, Class, [SUM])values('GV2', 'L003', 7000)
insert into #t(GV, Class, [SUM])values('GV2', 'L001', 7000)
insert into #t(GV, Class, [SUM])values('GV3', 'L001', 8000)
insert into #t(GV, Class, [SUM])values('GV3', 'L002', 8000)
insert into #t(GV, Class, [SUM])values('GV3', 'L003', 8000)
Select GV, class, [sum] from
(
Select Row_Number() Over(Partition by GV Order by GV ) as RowId, * from #t
)K
Where RowId = 1
drop table #t
GV class sum
---- ----- ----
GV1 L001 5000
GV2 L002 7000
GV3 L001 8000