我有两个名为LocalVSDB和TemporaryVSDB的表。这两个表具有相同的列:

  LocalVSDB: msisdn,activateDate
  TemporaryVSDB: msisdn,activateDate


但是两个表都具有MSIDSN的重复行

我需要加入这两个表。我的预期结果如下所示:

    MSISDN     LocalActivateDate    TemporaryActivateDate Datediff
  60103820251    2013-12-14          2013-10-05              70
  601111000254   2013-12-14          2013-10-05              70
  601111000254   2013-12-18          2013-09-10              80


但是,由于存在重复的MSIDSN,所以我加入时会得到重复的行。例如,每个表中的某些MSISDN有6行,因此当我加入时,该MSISDN总共有36行。

我正在使用以下查询加入:

   SELECT t.msisdn,t.activateDate AS VSDB_Activate_Date,
          l.activateDate AS Local_Activate_Date,
          DATEDIFF(D,l.activateDate,t.activateDate) AS date_Diff
   FROM temporaryVSDB2  t
   INNER JOIN LocalVSDB  l ON t.msisdn = l.msisdn
   WHERE  t.activateDate >  l.activateDate


请帮助我如何获得6行MSISDN的6行?

提前致谢。

最佳答案

问题是:

where  t.activateDate >  l.activateDate


这意味着表一中的一行可以连接到表二中的所有六行。您要么需要将其更改为=,要么只是根据特定条件从第二个表中获取一行。

08-26 22:50