我需要找到一种在Session
查询中添加SELECT
列的方法。我正在使用SQL Server 2005.
这是最初的示例数据:
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
我需要编写一个查询,添加一个名为“Session”的列,然后每次更改名称和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
这可能吗?
答案 0 :(得分: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
答案 1 :(得分:-1)
最好避免数据库中的数据重复。我不知道你是否可以改变数据库结构,但如果可以,你应该创建两个表:
可以使用查询检索访问次数。