带有GROUPBY和JOIN的可移植SQL
我有以下两个表格: 表1:带有GROUPBY和JOIN的可移植SQL,sql,Sql,我有以下两个表格: 表1: Id DeviceName DeviceLocation AdditionalColumn1 AdditionalColumn2 1 xyz Africa SomeColText1 SomeText1 2 abc USA SomeColText2 SomeText2 表2: Id Name ExternalId DeviceName DeviceLocation Version
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
L,它将从Table2
中获取所有与Table1
连接的值,并从Table1(AdditionalColumn1,AdditionalColumn2)
中获取附加字段。此外,我想从Table2
中获取具有最大版本的元素。因此,预期结果应该是:
Id Name ExternalId DeviceName DeviceLocation Version AdditionalColumn1
2 bbb 11 xyz Africa 1 SomeColText1
3 uuu 10 abc USA 2 SomeColText2
我有一个基本的版本设置,但什么样的版本更易于移植,可以跨数据库工作?我认为这将是一个可能的解决方案:
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
表1和表2之间有什么联系?表2中的版本是什么?它是什么的版本?对于给定的externalId,我可以有多个版本,并且可以在版本列下进行跟踪!Table1有一个复合主键,它是DeviceName和DeviceLocation的组合,我在Table2中使用了这些信息,可能您的基本版本正是需要的!!我仍然不明白选择id=2
的标准,而不是id=1
!!