Sybase 12.7 Home Theater System User Manual


 
GROUP BY 句の拡張機能
52 Sybase IQ
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