2014-09-03 2 views
0

자체 조인 테이블을 만들려고합니다. 따라서 예를 들어 D (Debits)와 C (Credits)의 합계를 기준으로 테이블이 아래쪽으로 회전하지만 "D"항목의 수와 "C"더하기 두 개의 추가 열을 추가하는 열을 추가하려면 테이블 자체에 가입해야합니다 전체 합계 및 전체 수를 나타내는 열. 아래 표를 결합하여 추가 열을 만드는 방법은 무엇입니까?SQL Server : 두 개의 피벗 테이블 조인

SQLFiddle에서 입력 테이블

GL_BU GL_Source GL_JE_Type   GL_Amount Amount_Prefix 
------------------------------------------------------------------ 
202  Payables Purchase Invoices  1234    C 
202  Payables Purchase Invoices   123    D 
202  Inventory Inventory     123    C 
202  Payables Purchase Invoices  1234    C 

출력 표

GL_BU GL_Source GL_JE_Type Amount D Amount C Count D Count C Total Count Total Amount 
------------------------------------------------------------------------------------------ 
202 Spreadsheet XXXXX   1234  123   1  1   2  1357 
202 Manual  XXXXX   1234  123   2  2   4  1357 
202 Manual  XXXXX   1234  123   1  1   2  1357 
202 Inventory XXXXX   1234  123   4  4   8  1357 
202 Sales Order XXXXXX  1234  123   1  1   2  1357 

현재 코드

SELECT * 
    FROM 
      (SELECT 
        [GL_Business_Unit] 
        ,[GL_Source] 
        ,[GL_JE_Type] 
        ,([GL_Amount]) 
        ,[Amount_Prefix] 
       FROM [03_rdm].[table_2013]) as t 
       Pivot(SUM([GL_Amount]) 
       FOR [Amount_Prefix] IN (D,C)) AS pvt1 

현재 코드 링크는 http://sqlfiddle.com/#!3/92369/2

+0

흠을 참조하십시오 기회 당신은 테이블 구조, 샘플 데이터를 게시 할 수 있습니다 그리고 마지막으로 원하는 결과? 또는 http://sqlfiddle.com/을 만들 수도 있습니다. – Taryn

+0

샘플 입력과 원하는 출력으로 업데이트되었습니다. – Calgar99

답변

2

샘플 데이터는 않습니다 원하는 결과와 일치하지 않아서 이것이 필요한 것이라고 생각합니다. 당신은 결과를 얻을 수있는 PIVOT을 사용할 수 있지만, 이것은 CASE 표현을 통해 집계 함수와 일부 조건부 논리를 사용하여이 얻을 훨씬 쉽게 될 것이라고 보인다

select 
    GL_BU, 
    GL_Source, 
    GL_JE_Type, 
    sum(case when Amount_Prefix = 'D' then GL_Amount else 0 end) Amount_D, 
    sum(case when Amount_Prefix = 'C' then GL_Amount else 0 end) Amount_C, 
    sum(case when Amount_Prefix = 'D' then 1 else 0 end) Count_D, 
    sum(case when Amount_Prefix = 'C' then 1 else 0 end) Count_C, 
    count(*) TotalCount, 
    sum(GL_Amount) TotalAmount 
from table_2013 
group by GL_BU, GL_Source, GL_JE_Type; 

는 어떤 SQL Fiddle with Demo

+0

훨씬 간단한 방법입니다. 너. – Calgar99