2016-09-06 11 views
1
-------------------------------------------------------------- 
AnimalName AnimalType RowNumber 
--------------------------------------------------------------- 
Chicken   Bird  1 
Duck   Bird  2  
Alpaca   Mammal  1 
Camel   Mammal  2 
Carabao   Mammal  3 
Whale   Sea   1 
Shark   sea   2 
Prawns   Sea   3 
Eel    sea   4 

OUTPUT最後でROW_NUMBERを選択する必要が

AnimalName  AnimalType RowNumber 
------------------------------------------------------------   
Duck    Bird   2 
Carabao   Mammal  3 
Eel    sea   4 

問合せ:私は最後のROWNUMBERを選択したい場合は、クエリの上

SELECT t.* from (
select 
    AnimalName, 
    AnimalType, 
    ROW_NUMBER() OVER(PARTITION BY AnimalType ORDER BY AnimalName) AS RowNumber 
FROM Animal A 
) t 
where rownumber=1 

は、私にすべての第一ROWNUMBERを与えています私は何を変えなければなりません。例えばのための :鳥の最大ROWNUMBERは、2である哺乳類maxが3であると海maxは4

答えて

2

ちょうどORDER BYためDESCの代わりASCを使用している:

SELECT a.* 
FROM (SELECT AnimalName, AnimalType, 
      ROW_NUMBER() OVER (PARTITION BY AnimalType ORDER BY AnimalName DESC) AS RowNumber 
     FROM Animal a 
    ) a 
WHERE rownumber = 1; 

あなたが本当に行番号を保持したい場合は、同じことが、その後、比較のためにCOUNT(*)を使用します。

SELECT a.AnimalName, a.AnimalType, a.rownumber 
FROM (SELECT AnimalName, AnimalType, 
      ROW_NUMBER() OVER (PARTITION BY AnimalType ORDER BY AnimalName) AS RowNumber, 
      COUNT(*) OVER (PARTITION BY AnimalType) as cnt 
     FROM Animal a 
    ) a 
WHERE rownumber = cnt; 
+0

それはあなたが素晴らしいです動作します!!!!感謝 –

関連する問題