我不明白使用语法代码"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
CASE
是一个条件表达式,类似于if
语句。
GROUPING
是一个函数:
指示是否聚合GROUP BY列表中指定的列表达式。GROUPING在结果集中为聚合返回1,为未聚合返回0。当指定GROUP BY时,GROUPING只能在SELECT list、HAVING和ORDER BY子句中使用。