
GROUP BY 句の拡張機能
Large | (NULL) | (NULL) | 71 | 0 | 1 | 1 |
Large | Sweatshirt | (NULL) | 71 | 0 | 0 | 1 |
Medium | (NULL) | (NULL) | 134 | 0 | 1 | 1 |
Medium | Shorts | (NULL) | 80 | 0 | 0 | 1 |
Medium | Tee Shirt | (NULL) | 54 | 0 | 0 | 1 |
One size fits all | (NULL) | (NULL) | 263 | 0 | 1 | 1 |
One size fits all | Baseball Cap | (NULL) | 124 | 0 | 0 | 1 |
One size fits all | Tee Shirt | (NULL) | 75 | 0 | 0 | 1 |
One size fits all | Visor | (NULL) | 64 | 0 | 0 | 1 |
Small | (NULL) | (NULL) | 28 | 0 | 1 | 1 |
Small | Tee Shirt | (NULL) | 28 | 0 | 1 | 1 |
ROLLUP 例 3 次の例は、GROUPING を使用して、最初から格納されていた NULL 値と ROLLUP 操作によって生成された “NULL” 値とを区別する方法を 示しています。このクエリで指定されているとおり、最初から格納されていた NULL 値はカラム prod_id に [NULL] として表示され、ROLLUP によって生成 された “NULL” 値はカラム PROD_IDS で ALL に置き換えられます。
SELECT year(ship_date) AS Year, prod_id, SUM(quantity) AS OSum, CASE WHEN GROUPING(Year) = 1 THEN 'ALL' ELSE CAST(Year AS char(8)) END, CASE WHEN GROUPING(prod_id) = 1 THEN 'ALL' ELSE CAST(prod_id as char(8)) END
FROM alt_sales_order_items
GROUP BY ROLLUP(Year, prod_id) HAVING OSum > 36 ORDER BY Year, prod_id;
このクエリの結果セットを次に示します。
ship_date | prod_id | SUM | SHIP_DATES | PROD_IDS |
NULL | NULL | 28359 | ALL | ALL |
2000 | NULL | 17642 | 2000 | ALL |
2000 | 300 | 1476 | 2000 | 300 |
2000 | 301 | 1440 | 2000 | 301 |
2000 | 302 | 1152 | 2000 | 302 |
2000 | 400 | 1946 | 2000 | 400 |
2000 | 401 | 1596 | 2000 | 401 |
2000 | 500 | 1704 | 2000 | 500 |
2000 | 501 | 1572 | 2000 | 501 |
2000 | 600 | 2124 | 2000 | 600 |
2000 | 601 | 1932 | 2000 | 601 |
2000 | 700 | 2700 | 2000 | 700 |
2001 | NULL | 10717 | 2001 | ALL |
2001 | 300 | 888 | 2001 | 300 |
2001 | 301 | 948 | 2001 | 301 |
2001 | 302 | 996 | 2001 | 302 |
2001 | 400 | 1332 | 2001 | 400 |
2001 | 401 | 1105 | 2001 | 401 |
2001 | 500 | 948 | 2001 | 500 |
52 | Sybase IQ |