2016-06-28 32 views
-1

組行我有一個查詢的這樣SQL服務器:具有相同的值,其他行

Acct#  OwnerType TotalBal Type1Bal Type2Bal Type3Bal 
    -------------------------------------------------------------- 
    1234  Type1  0   1000   0   
    1234  Type2  0    0  1000 
    1234  Type3  0    0   0  1000 
    123456 Type1  0   2000   0   0 
    123456 Type2  0    0  2000   0 
    123456 Type3  0    0   0  2000 

這是由查詢產生的採樣數據的輸出。對於每個帳號,我需要一個標題行(類似這樣的),與實際僅三個餘額中的一個餘額的總餘額排成一行)。任何人都可以提出或指出我的方向是正確的嗎?

Acct#  OwnerType TotalBal Type1Bal Type2Bal Type3Bal 
    ------------------------------------------------------------------- 
    1234  TotalAmt 1000   0   0  0 
    1234  Type1  0  1000   0  0 
    1234  Type2  0   0   1000  0 
    1234  Type3  0   0   0 1000 
    123456 TotalAmt 2000   0   0  0 
    123456 Type1  0  2000   0  0 
    123456 Type2  0   0   2000  0 
    123456 Type3  0   0   0 2000 

回答

0
Declare @Table table (Acct int,OwnerType varchar(25),TotalBal int,Type1Bal int,Type2Bal int,Type3Bal int) 
Insert into @Table values 
(1234  ,'Type1',  0,   1000,   0 ,  null), 
(1234  ,'Type2',  0 ,   0 ,  1000,  null), 
(1234  ,'Type3',  0 ,   0 ,   0 ,  1000), 
(123456 ,'Type1',  0 ,   2000 ,  0 ,  0), 
(123456 ,'Type2',  0 ,   0 ,  2000 ,  0), 
(123456 ,'Type3',  0 ,   0 ,   0 ,  2000) 


Select Acct,OwnerType='TotalAmt',TotalBal=max(Type1Bal),Type1Bal=0,Type2Bal=0,Type3Bal=0 From @Table Group By Acct 
Union All 
Select Acct,OwnerType,TotalBal=0,Type1Bal=isnull(Type1Bal,0),isnull(Type2Bal,0),IsNull(Type3Bal,0) from @Table 
Order By Acct,OwnerType 

返回

Acct OwnerType TotalBal Type1Bal Type2Bal Type3Bal 
1234 TotalAmt 1000  0   0   0 
1234 Type1  0   1000  0   0 
1234 Type2  0   0   1000  0 
1234 Type3  0   0   0   1000 
123456 TotalAmt 2000  0   0   0 
123456 Type1  0   2000  0   0 
123456 Type2  0   0   2000  0 
123456 Type3  0   0   0   2000 
相關問題