我想要得到的第一排,每GV(TeacherID)獲取第一排爲一組
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
幫助我。
我想要得到的第一排,每GV(TeacherID)獲取第一排爲一組
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;
如果您需要在除了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方便測試,因此語法可能不完全正確;但它很接近。
WITH T AS (
SELECT yourTable.*, ROW_NUMBER() OVER(PARTITION BY TeacherID
ORDER BY ClassID) AS RN
FROM yourTable
)
SELECT *
FROM T
WHERE RN = 1
這很有趣。非常感謝你 – Khanh 2012-02-15 02:54:21
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
結果集
GV class sum
---- ----- ----
GV1 L001 5000
GV2 L002 7000
GV3 L001 8000
太感謝你了。但方式2是正確的,我需要。 – Khanh 2012-02-15 02:55:13