使用语法代码“CASE GROUPING”的目的

时间:2012-03-11 13:12:04

标签: sql sql-server

我不明白使用语法代码“CASE GROUPING”的目的?

不幸的是,我没有数据库来查看下面的源代码。

SELECT 
    CASE GROUPING(st.stor_name) WHEN 0 THEN st.stor_name ELSE 'ALL' END AS Store, 
    CASE GROUPING(s.type) WHEN 0 THEN s.type ELSE 'ALL TYPES' END AS Type, 
    SUM(s.qty) AS TotalSold 
FROM 
   (SELECT DISTINCT st.stor_id, t.type, 0 AS qty 
    FROM stores st CROSS JOIN titles t 
    UNION ALL 
    SELECT 
        s.stor_id, 
        t.type, s.qty 
    FROM sales s JOIN titles t ON s.title_id=t.title_id) s 
JOIN stores st ON (s.stor_id=st.stor_id) 
GROUP BY st.stor_name, s.type WITH CUBE 

1 个答案:

答案 0 :(得分:1)

CASE是一个条件表达式,就像if语句一样。

GROUPING是一个函数:

  

指示是否聚合GROUP BY列表中的指定列表达式。对于聚合,GROUPING返回1,对于未在结果集中聚合,返回0。只有在指定GROUP BY时,GROUPING才能在SELECT列表,HAVING和ORDER BY子句中使用。