1

我在 MSSQL 中发现两者都存在

SELECT <list of columns>, sum(measure) as measure    
FROM fact-table
GROUP BY <list of columns> WITH CUBE

SELECT <list of columns>, sum(measure) as measure    
FROM fact-table
GROUP BY CUBE (<list of columns>)

我在徘徊有什么区别,因为使用它们,我得到了两种语法相同的结果。

我还记得,至少对于 2008 版,快速版支持 WITH CUBE,ROLLUP()、CUBE() 和 GROUPING SETS() 是“企业版”的一个功能

4

2 回答 2

1

差异在文档中说明:

SQL Server 和 Azure SQL 数据库
符合 ISO 标准的语法

GROUP BY {
      column-expression  
    | ROLLUP ( <group_by_expression> [ ,...n ] )  
    | CUBE ( <group_by_expression> [ ,...n ] )  
    | GROUPING SETS ( <grouping_set> [ ,...n ]  )  
    | () --calculates the grand total 
} [ ,...n ] 

仅用于向后兼容。
SQL Server 和 Azure SQL 数据库的非 ISO 兼容语法

GROUP BY 
      [ ALL ] column-expression [ ,...n ] 
    | column-expression [ ,...n ] [ WITH { CUBE | ROLLUP } ]   

和:

功能 SQL Server SQL Server SQL Server 2008 或更高版本
          集成服务兼容级别 100 和兼容级别 90
                                 或更高

CUBE 不支持 支持 不支持

WITH CUBE 支持 支持 支持
于 2018-08-06T14:57:09.393 回答
0

我相信WITH关键字在所有情况下都是可选的,除了开始一个 CTE 声明,在这种情况下 - 两者都做完全相同的事情

于 2018-08-06T14:50:06.507 回答