我有两个表(1 & 2)应该合并到第三个表中。在Excel中使用SQL“分组依据”功能组数据VBA
表1:F_Number,A_Number,A_Weight
表2:A_Number,A_Country
表3:F_Number,A_Country,A_Weight
的THRID表应由F_Number总结A_Weight其中A_Country具有相同的值进行分组。细到目前为止表的加盟作品:
Dim strSQL As String
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String
Dim sconnect As String
DBPath = ThisWorkbook.FullName
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
Conn.Open sconnect
strSQL = "Select [Table1$].[F_Number], [Table2$].[A_Country], [Table1$].[A_Weight] From [Table1$] Inner Join [Table2$] On [Table2$].[A_Number]=[Table1$].[A_Number]"
mrs.Open strSQL, Conn
ActiveSheet.Range("A2").CopyFromRecordset mrs
mrs.Close
Conn.Close
结果是这样的一个表:
F_Number;一个国家; A_Weight
F_1;我们; 10%
F_1:US; 10%
F_1;英国; 80%
F_2;英国; 100%
我想这个表由 “A_Weight” 进行分组如下:
F_Number;一个国家; A_Weight
F_1;我们; 20%
F_1;英国; 80%
F_2;英国; 100%
我对SQL没有太多了解,但是到目前为止我尝试过的是总结A_Weight并按F_Number对结果进行分组,这给了我一个错误信息。我正在使用德语版本,因此我只能尝试翻译错误:“自动化错误”。我仍然认为它应该像这样工作。
这里是我的非工作代码,SQL字符串:
strSQL = "Select [Table1$].[F_Number], [Table2$].[A_Country], Sum([Table1$].[A_Weight]) From [Table1$] Inner Join [Table2$] On [Table2$].[A_Number]=[Table1$].[A_Number] Group By [Table1$].[F_Number]"
您需要使用Aggregate函数对行进行分组。 –
感谢Pankaj Jaju,但我认为'sum'是我的聚合函数。我是否也需要'F_Number'这样的功能?仍然,错误消息表明语法错误。 – user3480701