2012-04-30 2 views
1

SELECT 쿼리에 Session 열을 추가하는 방법을 찾아야합니다.SQL 쿼리 : '세션'열을 만드는 방법

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를 증가하는 쿼리를 작성해야합니다 나는 초기 예제 데이터를 여기에 SQL 서버 2005

을 것 사용하고 있습니다 .

그래서 쿼리이 발생한다 :

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

예제 데이터에서 세션은 겹치지 않습니다. 즉 일반적으로 true의 경우, 이전에 시작 세션의 수를 셀 수 :이 의견에 동의

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

데이터베이스에서 데이터 중복을 피하는 것이 좋습니다. 데이터베이스 구조를 변경할 수 있는지 여부는 모르지만 가능한 경우 두 개의 테이블을 만들어야합니다.

  • 테이블 "users"에는 세션 ID와 사용자 이름 (고유)이 있습니다.
  • 테이블 "방문수"에는 방문 ID와 사용자 ID가 포함됩니다.

방문 횟수는 검색어로 검색 할 수 있습니다.

+1

을하지만, 어디해야 연산 질문 – Lamak

+0

에 대한 답변 안 나는 이것을 게시 했습니까? 큰 의견을 게시하는 것은 불편합니다. –