在Excel VBA中使用SQL的“分组依据”功能对数据进行分组
我有两个表(1&2)应该合并到第三(3)个表中。
表1:F_Number,A_Number,
A_Weight
表2:A_Number,A_Country表3:F_Number,A_Country,A_Weight
第三表应按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:美国;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-String代码:
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]"
-
您的代码很好;您只需要修改SQL查询。
strSQL = "SELECT [Table1$].[F_Number], [Table2$].[A_Country], SUM([Table1$].[A_Weight]) " & _ "FROM [Table1$], [Table2$] " & _ "WHERE [Table2$].[A_Number] = [Table1$].[A_Number] " & _ "GROUP BY [Table1$].[F_Number], [Table2$].[A_Country]"
-
SQL-在分组依据中使用别名
2021-05-10 关注 0 浏览75 1答案
-
使用VBA在Excel中使用SQL风格的查询
2021-04-20 关注 0 浏览107 1答案
-
在Access 2007 SQL中按聚合功能对分组中的差异进行计数
2021-03-27 关注 0 浏览169 1答案
-
按分组列值的变化对数据进行分组
2021-05-10 关注 0 浏览113 1答案
-
Excel Vba-在SQL字符串中使用撇号
2021-07-06 关注 0 浏览130 1答案
-
如何使用角度过滤器对数据进行分组?
2021-02-02 关注 0 浏览104 1答案
-
在Excel VBA中使用数组或字典作为SQL中的FROM子句
2021-04-15 关注 0 浏览704 1答案
-
pandas通过对数据帧的操作进行分组
2021-01-29 关注 0 浏览54 1答案
-
在SQL中,如何对范围进行“分组依据”?
2021-04-20 关注 0 浏览45 1答案
-
JavaScript使用对象对数组项进行分组
2021-02-02 关注 0 浏览120 1答案