记录集:获取 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
数据成员以容纳聚合结果。 请参阅以下示例。
获取记录集的聚合结果
创建记录集,如添加 MFC ODBC 使用者中所述,其中包含要从中获取聚合结果的列。
修改记录集的 DoFieldExchange 函数。 将表示列名称的字符串(RFX 函数调用的第二个参数)替换为表示列的聚合函数的字符串。 例如,将:
RFX_Long(pFX, "Sales", m_lSales);
替换为:
RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
打开记录集。 聚合操作的结果保留在
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);