2012-02-15 1 views

ответ

2

Редактировать: ok, теперь вы отредактировали вопрос, чтобы этот ответ выглядел совершенно неактуальным ... вздох ... Я оставлю его на случай, если это поможет вам начать работу. Приветствия.


Самое простое решение с учетом ваших спецификации:

select teacherid 
    from mytable 
group by teacherid; 

Если вам нужна другая информация в дополнение к 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; 

РИСКОВАННАЯ ПОКУПКА: У меня нет установки SQL-Server удобен для тестирования, поэтому синтаксис может быть не совсем точным; но это близко.

+0

спасибо так много. Но путь 2 прав, что мне нужно. – Khanh

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 
+0

Это интересно. Спасибо большое – Khanh

1

DDL

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 

Resultset

GV class sum 
---- ----- ---- 
GV1 L001 5000 
GV2 L002 7000 
GV3 L001 8000 
+0

большое спасибо. Привет – Khanh

+0

Пожалуйста, отметьте это как ответ, если он решит вашу проблему. – Pankaj