برای تولید سرجمع در پرسش های SQL که توسط دستور Group by بدست آمده از روش ریز استفاده میکنیم:
که قسمت خط آخر هر فرمان را در نسخه های قدیمی به صورت group by colname with Cube هم مینویسند.
خروجی این دو دستور هنگامی که روی یک ستون اعمال شوند یکسان است اما هنگامی که روی بیش از یک ستون اجرا شوند خروجی های متفاوتی را خواهند داشت.
خروجی دستور Rollup در جالت چند ستونی بدین صورت است که علاوه بر تولید سرجمع کلی، بر اساس ستون اول روی ستون دوم سرجمع تولید میکند:
Country | Region | TotalSales |
---|---|---|
Canada | Alberta | 100 |
Canada | British Columbia | 500 |
Canada | NULL | 600 |
United States | Montana | 100 |
United States | NULL | 100 |
NULL | NULL | 700 |
خروجی دستور Cube در جالت چند ستونی بدین صورت است که علاوه بر تولید سرجمع کلی، بر اساس تمام ستون ها سرجمع تولید میکند:
Country | Region | TotalSales |
---|---|---|
Canada | Alberta | 100 |
NULL | Alberta | 100 |
Canada | British Columbia | 500 |
NULL | British Columbia | 500 |
United States | Montana | 100 |
NULL | Montana | 100 |
NULL | NULL | 700 |
Canada | NULL | 600 |
United States | NULL | 100 |
همانطور که متوجه شدید مقدار سطری که حاوی سرجمع است NULL است، برای استفاده عملیاتی میشه با تابع IsNull مقدار گذاریش کرد:
منبع: