2014-11-12 4 views
8

필자는 아래에서 피벗 할 테이블을 찾고 있으므로 열 1의 설명이 새 피벗의 열 머리글이됩니다. 나는 아래의 결과가 그 이하로 설정하려면 코드를 사용하고피벗 테이블이 NULL로 여러 행을 반환하면 결과는 한 행에 그룹화되어야합니다.

Nominal Group | GrpID | Description  | Value  | CustomerID 
---------------+-------+-----------------+-------------+----------- 
Balance Sheet | 7  | BS description | 56973.10 |  2 
Cost of Sales | 4  | COS description | 55950.17 |  2 
Sales   | 1  | Sales   | -178796.18 |  2 
Labour Costs | 5  | Wages   | 18596.43 |  2 
Overheads  | 6  | Rent   | 47276.48 |  2 

:

select * from trialbalancegrouping 
PIVOT (Sum(value) 
for nominalgroupname in ([Sales],[Cost of Sales],[Labour Costs],[Overheads])) AS PVTtable 

- 이상적으로

GrpID | Description | CustomerID | Sales | Cost of Sales | Labour Costs | Overheads 
------+---------------+------------+------------+---------------+--------------+----------- 
    1 | Sales  |  2  | -178796.18 |  NULL  |  NULL |  NULL 
    2 |COS Description|  2  | NULL | 55950.17 |  NULL |  NULL 
    3 | Labour  |  2  | NULL |  NULL  | 18596.43 |  NULL 
    4 | Overheads |  2  | NULL |  NULL  |  NULL | 47276.48 

을, 나는 출력 당 하나 개의 행이 될 싶어 고객 :

CustomerID | Sales | Cost of Sales | Labour Costs | Overheads 
-----------+------------+----------------+--------------+------------ 
    2  | -178796.18 |  55950.17 | 18596.43 | 47276.48 
+0

는 그냥 서브 쿼리의 설명을 제거하고 이제 많은에서 가져올 수있는 당신이 나에게 –

답변

8

임의의 열 tha t가 사용 가능하면 PIVOT 함수로 전달되므로 집계 된 열을 제외한 모든 열과 축이 표시된 열은 암시 적으로 그룹화됩니다. 따라서 GrpIDDescription이 포함되어 있지 않으므로 그룹화됩니다. 따라서 조합 당 하나의 행이 생성됩니다 이들의. 당신은 하위 쿼리를 사용하여 피벗 함수에 전달 된 열을 제한해야합니다

SELECT pvt.CustomerID, 
     pvt.Sales, 
     pvt.[Cost of Sales], 
     pvt.[Labour Costs], 
     pvt.[Overheads] 
FROM ( SELECT CustomerID, nominalgroupname, Value 
      FROM trialbalancegrouping 
     ) AS t 
     PIVOT 
     ( SUM(Value) 
      FOR nominalgroupname IN 
       ( [Sales],[Cost of Sales], 
        [Labour Costs],[Overheads] 
       ) 
     ) AS pvt; 
+0

좋은 가레스을 보이는 테이블 구조를 제공 할 수 있습니다하십시오 고객 세부 정보. 도와 줘서 고마워. :) – Stu412

+0

죄송합니다,'description'이 아닌 하위 쿼리에'nominalgroupname '이 있어야합니다. – GarethD

+0

아무런 문제가 없지만 몇 시간 안에 얻는 것보다 5 분 더 걸립니다! 감사 – Stu412

관련 문제