记录集:获取 SUM 及其他聚合结果 (ODBC)

注意

MFC ODBC 使用者向导在 Visual Studio 2019 及更高版本中不可用。 你仍可以手动创建使用者。

本主题适用于 MFC ODBC 类。

本主题介绍如何使用以下 SQL 关键字来获取聚合结果:

  • SUM 计算数值数据类型列中的值的总和。

  • MIN 提取数值数据类型列中的最小值。

  • MAX 提取数值数据类型列中的最大值。

  • AVG 计算数值数据类型列中所有值的平均值。

  • COUNT 计算任何数据类型列中的记录数。

可以使用这些 SQL 函数来获取有关数据源中记录的统计信息,而不是用于从数据源中提取记录。 创建的记录集通常由包含值的单个记录(如果所有列为聚合)组成。 (如果使用了 GROUP BY 子句,则可能存在多个记录。)此值是 SQL 函数执行的计算或提取的结果。

提示

若要在 SQL 语句中添加 SQL GROUP BY 子句(可能还有“HAVING”子句),请将其附加到 m_strFilter 的末尾。 例如:

m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";

可以通过对列进行筛选和排序来限制用于获取聚合结果的记录数。

注意

某些聚合运算符将从其聚合的列返回不同的数据类型。

  • SUM 和 AVG 可能会返回下一个更大的数据类型(例如,使用 int 进行调用会返回 LONG 或 double

  • 不管目标列的类型是什么,“COUNT”通常会返回“LONG”

  • “MAX”和“MIN”返回与其计算列相同的数据类型

    例如,“添加类”向导会创建 long m_lSales 以容纳 Sales 列,但需要将此替换为 double m_dblSumSales 数据成员以容纳聚合结果。 请参阅以下示例。

获取记录集的聚合结果

  1. 创建记录集,如添加 MFC ODBC 使用者中所述,其中包含要从中获取聚合结果的列。

  2. 修改记录集的 DoFieldExchange 函数。 将表示列名称的字符串(RFX 函数调用的第二个参数)替换为表示列的聚合函数的字符串。 例如,将:

    RFX_Long(pFX, "Sales", m_lSales);
    

    替换为:

    RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
    
  3. 打开记录集。 聚合操作的结果保留在 m_dblSumSales 中。

注意

向导实际将分配没有匈牙利语前缀的数据成员名称。 例如,向导将为“Sales”列生成 m_Sales,而不是之前用于图中的 m_lSales 名称。

如果使用 CRecordView 类来查看数据,则必须更改 DDX 函数调用以显示新的数据成员值;在这种情况下,更改:

DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);

更改为:

DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);

另请参阅

记录集 (ODBC)
记录集:记录集如何选择记录 (ODBC)