The syntax of the GROUPING function: GROUPING(column_name) : GROUPING « Analytical Functions « SQL Server / T-SQL Tutorial






18> --A summary query that uses the GROUPING function

21> create table Bankers(
22>    BankerID             Integer,
23>    BankerName           VARCHAR(20),
24>    BankerContactLName   VARCHAR(20),
25>    BankerContactFName   VARCHAR(20),
26>    BankerCity           VARCHAR(20),
27>    BankerState          VARCHAR(20),
28>    BankerZipCode        VARCHAR(20),
29>    BankerPhone          VARCHAR(20)
30> )
31> GO
1>
2> insert into Bankers values (1, 'ABC Inc.','Joe','Smith','Vancouver','BC','11111','111-111-1111');
3> GO

(1 rows affected)
1> insert into Bankers values (2, 'DEF Inc.','Red','Rice', 'New York', 'DE','22222','222-222-2222');
2> GO

(1 rows affected)
1> insert into Bankers values (3, 'HJI Inc.','Kit','Cat',  'Paris',    'CA','33333','333-333-3333');
2> GO

(1 rows affected)
1> insert into Bankers values (4, 'QWE Inc.','Git','Black','Regina',   'ER','44444','444-444-4444');
2> GO

(1 rows affected)
1> insert into Bankers values (5, 'RTY Inc.','Wil','Lee',  'Toronto',  'YU','55555','555-555-5555');
2> GO

(1 rows affected)
1> insert into Bankers values (6, 'YUI Inc.','Ted','Larry','Calgary',  'TY','66666','666-666-6666');
2> GO

(1 rows affected)
1> insert into Bankers values (7, 'OIP Inc.','Yam','Act',  'San Franc','FG','77777','777-777-7777');
2> GO

(1 rows affected)
1> insert into Bankers values (8, 'SAD Inc.','Hit','Eat',  'Orland',   'PO','88888','888-888-8888');
2> GO

(1 rows affected)
1> insert into Bankers values (9, 'DFG Inc.','Sad','Lee',  'Wisler',   'PL','99999','999-999-9999');
2> GO

(1 rows affected)
1> insert into Bankers values (0, 'GHJ Inc.','Bit','Lee',  'Ticker',   'MN','00000','000-000-0000');
2> GO

(1 rows affected)
1>
2>
3>
4>
5> SELECT
6>     CASE
7>         WHEN GROUPING(BankerState) = 1 THEN 'All'
8>         ELSE BankerState
9>     END AS BankerState,
10>     CASE
11>         WHEN GROUPING(BankerCity) = 1 THEN 'All'
12>         ELSE BankerCity
13>     END AS BankerCity,
14>     COUNT(*) AS QtyBankers
15> FROM Bankers
16> WHERE BankerState IN ('IA', 'NJ')
17> GROUP BY BankerState, BankerCity WITH ROLLUP
18> ORDER BY BankerState DESC, BankerCity DESC
19> GO
BankerState          BankerCity           QtyBankers
-------------------- -------------------- -----------

(0 rows affected)
1>
2> drop table Bankers;
3> GO
1>
2>








14.4.GROUPING
14.4.1.GROUPING() Comes to the Rescue
14.4.2.Replacing NULLs with ALL and UNKNOWN
14.4.3.The syntax of the GROUPING function: GROUPING(column_name)
14.4.4.GROUPING() function returns a bit value (1 or 0) to indicate that a row is a rollup.