0

我有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 的所有记录,并在表 1 中添加一个新列 GroupCode 并且每个组都有相似的价值。

值示例

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 中进行此分组?

4

1 回答 1

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
于 2012-12-19T09:25:36.603 回答