2014-01-22 3 views
1

I, 나는이 (가) GROUPING_IDGROUPING_ID 출력은

에 관한 문제를 위의 설명에 따라 질문 다음 한 한 이론 출력과 일치하지 않는

더 나은 내 문제를 보여주기 위해 내 코드 (중요한 비트)를 설명 할 것이다

SELECT GROUPING_ID([Description], AccountNumber, Scheme) AS 'GroupingID' 

. . . .

GROUP BY GROUPING SETS ((Scheme, AccountNumber) 
     , (Scheme, AccountNumber, [Description]) 
     , (Scheme)  
     , ([Description]) 

나는 다음과 같은 링크를 사용하여 GROUPING_ID 기능을 이해 : 나는 GROUPING_ID는 GROUPING_ID 기능은 각 그룹 세트에 이진 값을 할당 한 이해 http://technet.microsoft.com/en-us/library/bb510624.aspx

방법. 이것은 base10 번호로 변환되어 grouping_ID 출력으로 지정됩니다. 위의 것을 기반으로, 내 grouping_ID (내 정신 계산). 누구든지 예상되는 grouping_ID가 무엇인지 말해 줄 수 있습니까? 다음을 계산합니다.

(Scheme, AccountNumber) =3 
(Scheme, AccountNumber, [Description]) = 7 
(Scheme) = 1 
([Description]) = 4 

정말 도움이됩니다. GROUPING_ID([Description], AccountNumber, Scheme) numers와

답변

0

은 다음과 같이 지정됩니다

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 함수의 인수에 지정된 것과 동일합니다.

+0

감사합니다. 원래의 질문에 첨부 된 링크의 예제를 기반으로 바이너리를 변환하여 base10 숫자를 계산했습니다. 따라서 GROUPING_ID ([Description], AccountNumber, Scheme)를 사용하면 (Scheme, AccountNumber) = 011에 대한 2 진수입니다.이 값을 base10으로 변환하면 3이됩니다. 올바르지 않습니까? –