示例代码如下:
DECLARE @t TABLE(Groups char(2),Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'aa','Table','Blue', 124
UNION ALL SELECT 'bb','Table','Red', -23
UNION ALL SELECT 'bb','Cup' ,'Green',-23
UNION ALL SELECT 'aa','Chair','Blue', 101
UNION ALL SELECT 'aa','Chair','Red', -90
--汇总显示
SELECT Groups=CASE
WHEN GROUPING(Color)=0 THEN Groups
WHEN GROUPING(Groups)=1 THEN '总计'
ELSE '' END,
Item=CASE
WHEN GROUPING(Color)=0 THEN Item
WHEN GROUPING(Item)=1 AND GROUPING(Groups)=0 THEN Groups+' 合计'
ELSE '' END,
Color=CASE
WHEN GROUPING(Color)=0 THEN Color
WHEN GROUPING(Color)=1 AND GROUPING(Item)=0 THEN Item+' 小计'
ELSE '' END,
Quantity=SUM(Quantity)
FROM @t
GROUP BY Groups,Item,Color WITH ROLLUP
/*--结果
Groups Item Color Quantity
-------- ---------------- ---------------------- -----------
aa Chair Blue 101
aa Chair Red -90
Chair 小计 11
aa Table Blue 124
Table 小计 124
aa 合计 135
bb Cup Green -23
Cup 小计 -23
bb Table Red -23
Table 小计 -23
bb 合计 -46
总计 89
--*/
分享到:
相关推荐
然而,GROUP BY还可以与GROUPING、ROLLUP和CUBE运算符结合使用,以实现更复杂的多维度汇总功能。这些高级的汇总方法在数据分析和报表生成中非常有用,尤其是在处理大型数据集时。 GROUPING运算符主要用于识别汇总行...
本文将详细解释`GROUPING`函数的使用方法及其应用场景,并通过一个示例来帮助理解其工作原理。 #### 一、`GROUPING`函数简介 `GROUPING`函数主要用于标识列是否被包含在`GROUP BY`子句中。当某列未被`GROUP BY`...
在7_14_os.sql这个文件中,可能包含了一个示例脚本,演示了如何在实际查询中使用GROUPING函数和GROUPING ID。可能的脚本内容可能包括创建视图、进行复杂的聚合计算,以及如何利用GROUPING函数来解析和展示结果。读者...
7-15.sql和7-15_os.sql文件可能包含与GROUPING_ID()相关的其他实例,可能是在没有使用Oracle的OLAP(在线分析处理)功能时,如何手动实现类似多维分析的效果。这些示例可能涉及如何在查询中结合GROUP BY、HAVING和...
《Pro Oracle SQL》一书的第7章,7.6节专门讲解了如何使用GROUPING()函数来处理这个问题。GROUPING()函数是Oracle数据库提供的一种特殊函数,用于识别汇总结果中的NULL值,并且在分组操作中有着独特的应用。 NULL值...
2. **执行动态SQL**:接着,使用`EXEC`命令执行之前构建好的动态SQL。 示例代码如下: ```sql DECLARE @sql VARCHAR(8000) SET @sql = 'SELECT ' SELECT @sql = @sql + ', MAX(CASE WHEN ' + γ + ' THEN ELSE 0 ...
《Pro Oracle SQL》Chapter 7 Advanced Grouping 是一本关于Oracle...通过阅读《Pro Oracle SQL》的这一章节,以及实践7_11_os.sql和7_12_os.sql中的示例,读者可以深入了解并掌握CUBE的用法,提升自己的数据处理能力。
### rollup cube grouping sets 的用法 在数据库查询语言 SQL 中,`ROLLUP`, `CUBE`, 和 `GROUPING SETS` 是三个重要的概念,它们主要用于处理多维度数据的汇总和分组问题,使得数据分析更加灵活高效。接下来,我们...
而在更复杂的场景下,为了方便地处理多级别的汇总数据,SQL提供了三种额外的语法:`ROLLUP`、`CUBE`以及`GROUPING SETS()`。这些语法可以帮助我们更加灵活地处理分组结果,并且可以有效地减少查询次数,提高效率。 ...
主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...
总之,《Pro Oracle SQL》中的这一章节深入介绍了`HAVING`子句的用法,帮助读者掌握如何在Oracle数据库环境中有效地进行分组和条件筛选,提升SQL查询的灵活性和实用性。通过实践和理解提供的示例脚本,读者将能够将...
在SQL查询中,`WITH CUBE` 和 `WITH ROLLUP` 是两种高级的聚合功能,它们用于扩展`GROUP BY`语句的功能,提供更复杂的分组和汇总数据的能力。这两种方法都涉及到多维数据分析的概念,尤其是在处理大量数据时非常有用...
SQL中的ROLLUP操作是用于创建多级汇总的一种方法,它在Oracle和SQL Server等数据库管理系统中都得到了广泛的应用。ROLLUP操作与GROUP BY语句一起使用,可以生成数据的上卷(roll-up)或聚合视图,即从最细粒度的数据...
文件中提到的关于SQL Server 2000到2005的数据迁移过程虽然与主题不太相关,但也提到了一种常见的数据库升级方法。简单来说,可以从旧版本的数据库备份数据,然后在新版本中恢复这些数据。这种方法适用于大多数...
GROUP BY 子句是 SQL 语言中用于分组数据的关键字,它可以根据一个或多个列对数据进行分组,并对每个分组应用聚合函数,以便计算和输出所需的结果。GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的...
- **流程控制**: 讨论`IF...ELSE`, `WHILE`, `CASE`等结构的使用方法,以实现更复杂的逻辑处理。 - **错误处理**: 探讨如何捕获和处理执行过程中的异常情况。 **3. Working with NULLS** - **NULL值处理**: 阐述...
- SQL Server独有的`GROUPING_ID()`用于确定分组级别,Oracle则使用`RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`等窗口函数来实现类似功能。 6. **条件函数** - `CASE`语句在两个数据库中都存在,用于基于条件进行...
在SQL中,生成统计报表,特别是包含小计与合计的部分,是常见的需求。...如果需要优化,可以考虑进一步调整代码以减少内存消耗,或者考虑使用其他方法,如GROUPING SETS或ROLLUP,取决于数据库系统版本的支持情况。
2. **使用方法**: - 函数可以在SELECT语句中使用,例如`SELECT MAX(column_name) FROM table`获取列的最大值。 - 可以与其他SQL语句结合,如`WHERE`子句中的条件判断`WHERE column_name = DATEADD(day, -7, ...