2012-12-19 66 views
0

我有2代表通过此结构:表1和表之间找到与类似领域值的记录在另一个表

Table 1 : 
    vID, 
    PID, 
    Year 

Table 2: 
    ID, 
    vID, (From Table 1) 
    StartTime, 
    EndTime 

关系2是1->*。 我们在表1中有大约5000条记录,在表2中有大约5000条记录。 现在我们需要找到表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和3在表1中必须具有GroupCode 1,记录2和4必须具有GroupCode = 2和记录7必须具有GroupCode = 3

是否有任何查询可以在Sql server 2008中进行此分组?

+0

如果三个西元具有匹配的PID和启动/ EndTimes应该发生什么? 像'vID1和vID2匹配'和'vID2和vID3匹配.'他们会在一个大组中吗?或者vID2会有两个GroupCodes? – Kaadzia

+0

如果表2中存在多个相关记录,则结果将不正确(对于相同的vID,2个或更多个groupCode),则它们将在一个大组中共同存在,一个组可能具有3个或更多个记录 – Ashian

回答

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 
+0

。 – Ashian

相关问题