2016-08-24 10 views
-2

下図のように私はこのようないくつかのデータを持っている:選択クエリ

Acc_Id || Row_No 
1   1 
2   1 
2   2 
2   3 
3   1 
3   2 
3   3 
3   4 

と私は、以下に示すような結果を得るために、クエリが必要になります。

Acc_Id || Row_No 
1   1 
2   3 
3   4 

してください私はSQLの初心者だと考えてください。

+0

ご希望の結果の背後にある任意のロジックを?あなたは、ロジックを説明することができ、すべての – Lamak

+0

で説明していませんか? –

+0

ギャップがなければ、 'count(*)'は 'max(Row_No)'と等価になります。本当の疑問は、あなたがカウントをしたいのか最大を望むのかです。 – shawnt00

答えて

0

が、これは集約し、グループ化へのあなたの最初の暴露であると仮定したいです。この問題が解決策への興味を引くようになった今、group bydocumentationを見るとよいでしょう。グループ化は、共通の列の値を持つ行を調べ、指定した行をグループを表す単一の行に集めます。あなたの場合、Acc_Idの値はあなたのグループの名前です。

他の回答は両方とも正しいですが、最後の2つの列はあなたのデータと同等になります。

select Acc_Id, count(*), max(Row_No) 
from T 
group by Acc_Id; 

番号の間にギャップがある場合、それらは同じではありません。実際には、列内の最大値の行数を実際に探しているかどうかを判断する必要があります。この時点で、将来あなたに役立ついくつかの他の集約関数を考慮することもできます。 (ここでは実際の値は、この文脈ではほとんど無意味であることに注意してください。)

select Acc_Id, min(Row_No), sum(Row_No), avg(Row_No) 
from T 
group by Acc_Id; 
1

はこれを試してみてください:

select Acc_Id, MAX(Row_No) 
from table 
group by Acc_Id 
2

私はあなたが行のカウント初心者として

SELECT Acc_Id, COUNT(*) 
FROM Table 
GROUP BY Acc_Id