2010-01-15 20 views
0

我有這樣想從表中的數據在SQL服務器

 

id id1 name 
1 1 test1 
1 1 test1 
1 2 test2 
2 1 test1 
2 2 test2 
3 1 test1 
3 2 test2 
3 2 test2 

現在表中的數據表我想要的數據如下 像 爲ID = 1個ORDER BY ID1 ASC名字= test1的 所以我想的前兩個行

 
id id1 name 
1 1 test1 
1 1 test1 

不第三行

對於ID = 2以便通過ID1遞增所述第一名稱= TEST1 ,所以我想第一排爲Test1具有分配唯一的ID = 2

 
id id1 name 
2 1 test1 

而對於ID = 3相同ID = 2

請建議我如何獲得ID的perticlur價值,因爲將之情況是不同的充爲ID = 1

回答

1

使用RANK()DENSE_RANK()獲得排名第一行,包括重複,每個ID。

select * from (
    select *, dense_rank() over (partition by [id] order by [id2]) as ranking 
    from [table] 
) as t 
where ranking = 1 
+0

非常感謝你much..it是沃金 – Paresh 2010-01-15 12:50:19

0

聽起來像你對我只是想select * from [tablename] where id1 = 1,但我可能是錯的。我覺得這個問題有點,嗯,含糊......

0

也許這:

select * from [table] where id = 1 order by id1 

我認爲這一點是,你可以在where子句中使用一個列,並在訂貨不同的列按條款。那沒問題。

但我不知道你實際上可以有你所描述的數據表,因爲前兩排是相同的(怎麼可以在SQL告訴他們分開?還是更多從技術上講,有會是一個主鍵衝突)?

+0

你好,'test1'是nox修復的數據,應該是任意的。我剛剛舉了一個例子。 – Paresh 2010-01-15 12:16:15

+0

,也希望所有的ID不是唯一一個ID – Paresh 2010-01-15 12:17:18

0
select * from [table] where id = 1 and name like "test1" order by id1 
+0

你好,「TEST1」是氮氧化物的修復數據,它應該是任何 – Paresh 2010-01-15 12:15:41

相關問題