2016-06-28 10 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 

ようなクエリの出力を有します。各口座番号には、ヘッダー行(このようなもの)、合計残高と実際には3つの残高のうちの1つの行が必要です。誰かが私に正しい方向を示唆したり指摘したりすることはできますか?

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 
関連する問題