2015-05-29 48 views
2

我有以下两个表:便携式SQL与GROUP BY和加入

表1:

Id DeviceName DeviceLocation AdditionalColumn1 AdditionalColumn2 
1 xyz  Africa   SomeColText1  SomeText1 
2 abc  USA   SomeColText2  SomeText2 

表2:

Id Name ExternalId DeviceName DeviceLocation Version 
1 yyy 10   xyz  Africa   1 
2 bbb 11   xyz  Africa   1 
3 uuu 10   abc  USA   2 

我试图拿出一个大号SQ这将使我得到Table2中的所有值,它们与Table1连接,并从Table1(AdditionalColumn1, AdditionalColumn2)获取其他字段。此外,我想从Table2中获取最大为Version的元素。因此,预期的结果应该是:

Id Name ExternalId DeviceName DeviceLocation Version AdditionalColumn1 
2 bbb 11   xyz  Africa   1  SomeColText1 
3 uuu 10   abc  USA   2  SomeColText2 

我有一个基本的版本设置,但是这将是一个更便携版本,跨数据库的作品?

+0

什么是Table 1和Table之间的联系?表2中的版本是什么?它是什么版本? –

+0

我可以有一个给定的externalId的多个版本,并在版本列下进行跟踪! – sparkr

+0

Table1有一个组合的主键,它是DeviceName和DeviceLocation的组合,我在表2中使用这些信息。 – sparkr

回答

1

我认为这将是可能的解决方案之一:

select t2.Id, 
     t2.Name, 
     t2.ExternalId, 
     t2.DeviceName, 
     t2.DeviceLocation, 
     t2.Version, 
     t1.AdditionalColumn1, 
     t1.AdditionalColumn2 
from 
(select ExternalID, max(Version) as Version from Table2 group by ExternalID) tmp 
join Table2 t2 on tmp.ExternalID = t2.ExternalID and tmp.Version = t2.Version 
join Table1 t1 on t1.DeviceName = t2.DeviceName and t1.DeviceLocation = t2.DeviceLocation