在另一个表中查找具有类似字段值的记录

时间:2012-12-19 07:58:29

标签: sql sql-server-2008

这个结构我有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中进行此分组?

1 个答案:

答案 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