当前位置: 首页 > 面试题库 >

在Excel VBA中使用SQL的“分组依据”功能对数据进行分组

金高飞
2023-03-14
问题内容

我有两个表(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]"


 类似资料:
  • 问题内容: 假设我有一个带有数字列的表(我们称其为“分数”)。 我想生成一个计数表,该表显示每个范围内得分出现的次数。 例如: 在此示例中,分数在0到9之间的行有11行,分数在10到19之间的行有14行,分数在20-29范围内的行有3行。 有一个简单的方法来设置它吗?您有什么推荐的吗? 问题答案: 在SQL Server 2000上,投票率最高的答案均不正确。也许它们使用的是其他版本。 这是它们在

  • 问题内容: 只是对SQL语法感到好奇。所以如果我有 这将是不正确的,因为 真的应该是 但是为什么我们不能仅仅为了方便而使用前者呢? 问题答案: 就像按以下顺序执行查询一样实现SQL: FROM子句 WHERE子句 GROUP BY子句 HAVING子句 SELECT子句 ORDER BY子句 对于大多数关系数据库系统,此顺序说明了哪些名称(列或别名)有效,因为它们必须在上一步中引入。 因此,在Or

  • 问题内容: 我有大约700万行,其中有60列以上。数据超出了我的内存容量。我正在基于列“ A”的值将数据聚合到组中。熊猫拆分/汇总/合并的文档假定我已经将所有数据都存储在了,但是我无法将整个商店读取到内存中。在分组数据的正确方法是什么? 问题答案: 这是一个完整的例子。 输出量 一些警告: 1)如果您的组密度相对较低,则此方法很有意义。大约数百或数千个组。如果获得的收益更多,则效率更高(但方法更复

  • 问题内容: 我有一张标签表,想从列表中获得计数最高的标签。 样本数据如下所示 使用 让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。 我试过了 而且我不断收到“组功能的无效使用-ErrNr 1111” 我究竟做错了什么? 我正在使用MySQL 4.1.25-Debian 问题答案: 在所有版本的MySQL中,只需在SELECT列表中为聚

  • 有如下两张表: 1、区域表 2、数量表 根据区域统计数量表获取每个区的数量 获得结果如下: count name 28 A区 18 B区 19 C区 26 D区 问题:现在需要将A和B区的数据合并起来算作A区的数据 期望的是: count name 46 A区+B区 19 C区 26 D区 SQL应该如何调整

  • 本文向大家介绍如何在JavaScript中对JSON数据进行分组?,包括了如何在JavaScript中对JSON数据进行分组?的使用技巧和注意事项,需要的朋友参考一下 要对JSON数据进行分组,您需要提取所有键并使用。以下是代码- 示例 要运行上述程序,您需要使用以下命令- 输出结果 在这里,我的文件名为demo122.js。这将产生以下输出-