2016-06-16 28 views
0

私は、Webサイトの訪問者から送信されたメッセージを持つテーブルを持っています。訪問者が複数のメッセージを送信した場合、それらのメッセージをグループ化できます。 「これらのメッセージをグループ化する」とは、Webページにグループ化されたメッセージを表示し、リレーショナルロジックの観点からグループ化されていないメッセージを表示することです。あなたは電子メールが同じであれば、「S」の欄には同じ番号を持って見ることができるように列の値に基づいてシーケンスを生成する方法

s email   messageid  
1 [email protected]  1  
1 [email protected]  3  
1 [email protected]  143  
2 [email protected]  343 
2 [email protected]  3 
3 [email protected]  3 

: は、私はこのような何かをしたいです。

私が試してみました:

select ROW_NUMBER() over(partition by m.email order by m.email) as s 

を、私はこれを取得:

s email   messageid  
1 [email protected]  1  
2 [email protected]  3  
3 [email protected]  143  
1 [email protected]  343 
2 [email protected]  3 
1 [email protected]  3 

各電子メールのためのシーケンスが計算されます。

+0

'... ORDER BY [s]'? –

答えて

3

sは新しい列ですか? DENSE_RANK()ウィンドウ関数を使用することができます:

SELECT DENSE_RANK() OVER(ORDER BY t.email) as [s], 
     t.email,t.messageid 
FROM YourTable t 
+1

は私にとっては速すぎる。ただし、連続する数字を使用する場合は、 'DENSE_RANK'にする必要があります。 –

+0

@ZoharPeledはい、あなたは正解です、ありがとう:) – sagi

+0

それは働いた!ありがとう! –

関連する問題