0

私はこの構造で2つのテーブルを持っています:

Table 1 :
  vID,
  PID,
  Year

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

表 1 と表 2 の関係は です1->*。表 1 には約 5000 のレコードがあり、表 2 には 9000 近くのレコードがあります。ここで、同じ PID と同じ StartTime および EndTime を持つ表 1 のすべてのレコードを検索し、新しい列 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 サーバー 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 に答える