2012-12-19 94 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

相關問題