Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有GROUPBY和JOIN的可移植SQL_Sql - Fatal编程技术网

带有GROUPBY和JOIN的可移植SQL

带有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

我有以下两个表格:

表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
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
!!