我有一个基于上述解释的问题,我对grouping_ID
有以下问题我将说明我的代码(重要位)以便更好地显示我的问题
SELECT GROUPING_ID( [Description], AccountNumber, Scheme) AS 'GroupingID'
。 。 。
GROUP BY GROUPING SETS ((Scheme, AccountNumber)
, (Scheme, AccountNumber, [Description])
, (Scheme)
, ([Description])
我使用以下链接了解Grouping_ID函数:http://technet.microsoft.com/en-us/library/bb510624.aspx
我理解grouping_ID的方式是grouping_ID函数为每个分组集分配一个二进制值。然后将其转换为base10编号并指定为grouping_ID输出。基于以上所述,我的grouping_ID(我的心理计算)。谁能告诉我预期的grouping_ID应该是什么?我计算如下:
(Scheme, AccountNumber) =3
(Scheme, AccountNumber, [Description]) = 7
(Scheme) = 1
([Description]) = 4
我真的很感激帮助。
答案 0 :(得分:0)
使用GROUPING_ID([Description], AccountNumber, Scheme)
,这些数字的分配如下:
Description = 1 << 1 = 1
AccountNumber = 1 << 2 = 2
Scheme = 1 << 3 = 4
所以:
(Scheme, AccountNumber) = 6
(Scheme, AccountNumber, [Description]) = 7
(Scheme) = 4
([Description]) = 1
你从哪里得到错误的基数?数字的顺序与GROUPING_ID
函数的参数中指定的完全相同。