2012-04-30 9 views
1

SELECTクエリにSession列を追加する方法を見つける必要があります。私は、SQL Serverに2005SQLクエリ:セッションの列を作成する方法

を使用しています。ここ初期データ例です:私は「セッション」と呼ばれる列を追加して、毎回名前の変更をインクリメントするクエリを記述する必要が

ID Name  VisitCounter  
1  TOM   1 
2  TOM   2 
3  TOM   3 
4  DICK   1  
5  DICK   2  
6  DICK   3  
7  DICK   4  
8  HARRY   1  
9  HARRY   2  
10 TOM   1 
11 TOM   2 
12 DICK   1  
13 DICK   2  

visitcounter = 1

ので、クエリは、このになる必要があります。

ID Name  VisitCounter Session 
1  TOM   1    1 
2  TOM   2    1 
3  TOM   3    1 
4  DICK   1    2 
5  DICK   2    2 
6  DICK   3    2 
7  DICK   4    2 
8  HARRY   1    3 
9  HARRY   2    3 
10 TOM   1    4 
11 TOM   2    4 
12 DICK   1    5 
13 DICK   2    5 and so on 

これは可能ですか?

答えて

5

サンプルデータでは、セッションは重複しません。それは一般的に真であるならば、あなたは以前に開始されたセッションの数数えることができる:

select yt.ID 
,  yt.Name 
,  yt.VisitCounter 
,  count(prev.ID) as Session 
from YourTable yt 
join YourTable prev 
on  prev.ID <= yt.ID and 
     prev.VisitCounter = 1 
group by 
     yt.ID 
,  yt.Name 
,  yt.VisitCounter 
order by 
     yt.ID 

Working example at SQL Fiddle.

+0

うわー!私は確かに学ぶことがたくさんある。これは機能します。これについてあなたの助けをありがとうございました。 – Jefferson

-1

データベースでデータの重複を避ける方がよい場合があります。

  • テーブル "ユーザー"には、セッションIDとユーザー名(一意)が含まれていますが、データベース構造を変更できるかどうかはわかりません。
  • テーブル「訪問数」には訪問IDとユーザーIDが含まれます。

訪問回数はクエリで取得できます。

+1

を私はこのコメントに同意するが、それは持っている必要があり、OPの質問 – Lamak

+0

への答えではありません私はこれを投稿した?大きなコメントを投稿することは不快です。 –

関連する問題