SQL自加入查询帮助

时间:2010-04-17 10:12:27

标签: sql sql-server-2005 tsql

我正在尝试使用eventnumber编写一个自我加入表的查询。我以前从未做过自我加入。

我想要查询的是当一个客户在一个城市开始时,他们会去看看他们搬到哪个城市。但我不想看到他们是否从另一个城市开始。我也希望只看到一次移动(所以我只想看看他们是从切斯特到伦敦,而不是从切斯特到伦敦到威尔士)

如果他们移动到另一个城市,则StartTimeDate与EndDateTime相同。

如果他们在城市切斯特开始,数据示例如下: -  

 
clientid      EventNumber       City             StartDateTime                  EndDateTime
1                  1            Chester          10/03/2009               11/04/2010 13:00
1                  1            Liverpool        11/04/2010 13:00         30/06/2010 16:00 
1                  1            Wales            30/07/2010 16:00

我希望看到的结果是在第二排 - 所以它只显示我的利物浦。

请问有人指出正确的指示吗?

1 个答案:

答案 0 :(得分:3)

您可以使用别名,它允许您使用同一个表的两个实例(将MyTable替换为您的表名称):

SELECT A.clientid, A.EventNumber, B.City AS CityTo, A.EndDateTime AS MoveDateTime
  FROM MyTable A INNER JOIN MyTable B
       ON A.clientid = B.clientid
      AND A.EventNumber = B.EventNumber
      AND A.EndDateTime = B.StartDateTime
WHERE A.City = 'Chester'