这个结构我有2个表:
Table 1 :
vID,
PID,
Year
Table 2:
ID,
vID, ( From Table 1 )
StartTime,
EndTime
表1和表2之间的关系是1->*
。
我们在表1中有大约5000条记录,在表2中大约有9000条记录。
现在我们需要找到表1中具有相同PID和相同StartTime和EndTime的所有记录,并将新列GroupCode添加到表1中,并且每个组具有相似的值。
值示例
Table 1
vID PID Year
1 100 2012
2 101 2012
3 100 2012
4 101 2012
5 100 2012
Table 2
ID vID StartTime EndTime
1 1 2012-01-01 2012-02-01
2 1 2012-05-01 2012-05-03
3 2 2012-02-05 2012-02-07
4 3 2012-01-01 2012-02-01
5 3 2012-05-01 2012-05-03
6 4 2012-02-05 2012-02-07
7 5 2012-03-05 2012-05-01
在此示例中,表1中的记录1和3必须具有GroupCode 1,记录2和4必须具有GroupCode = 2且记录7必须具有GroupCode = 3
是否有任何查询可以在Sql server 2008中进行此分组?
答案 0 :(得分:0)
您可以按以下方式获取群组......
select pid, starttime, endtime, ROW_NUMBER() over (order by min(id)) as groupcode
from t1
inner join t2
on t1.vid = t2.vid
group by pid, starttime, endtime
having COUNT(*)>1