我正在尝试使用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
我希望看到的结果是在第二排 - 所以它只显示我的利物浦。
请问有人指出正确的指示吗?
答案 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'