Collection Contents 上一页 下一页 PDF

ASA SQL 用户指南

使用 OLAP

NULL 值和小计行


当 GROUP BY 操作的输入中的行包含 NULL 时,可能会将由 ROLLUP、CUBE 或 GROUPING SETS 操作添加的小计行与包含的 NULL 值属于原始输入数据的行混淆。

GROUPING 函数通过以下方法将小计行与其它行区分开:采用分组依据列表中的列作为它的参数,并在该列为 NULL 时(因为行是小计行)返回 1,在该列不为 NULL 时返回 0。

示例 

下面的示例在结果集中包括 GROUPING 列。输入数据包含 NULL 的结果行被突出显示,小计行则没有。GROUPING 列会突出显示。查询是 employee 表和 sales_order 表之间的外连接。查询选择居住在德克萨斯、纽约或加利福尼亚的女雇员。NULL 会显示在与不是销售代表(因而没有销售额)的那些女雇员相对应的列中。

SELECT employee.emp_id AS Employee,
       year(order_date) AS Year,
       COUNT(*) AS Orders,
       GROUPING ( Employee ) AS GE,
       GROUPING ( Year ) AS GY
FROM employee LEFT OUTER JOIN sales_order
ON employee.emp_id = sales_order.sales_rep
WHERE employee.sex IN ('F') 
AND employee.state IN ('TX', 'CA', 'NY')
GROUP BY ROLLUP (Year, Employee)
ORDER BY Year, Employee

下面的表是查询的结果集。

A result set from a ROLLUP query where the NULL values that are a product of the result set, not subtotalled rows, are highlighted.

Collection Contents 上一页 下一页 PDF