Grouping_ID输出与理论输出不匹配

时间:2014-01-22 12:59:25

标签: sql binary grouping

我有一个基于上述解释的问题,我对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

我真的很感激帮助。

1 个答案:

答案 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函数的参数中指定的完全相同。