2016-03-04 81 views
0

我有值的表出現如下:拆分單一列值

+--------+----+--------+ 
| Client | ID | Amount | 
+--------+----+--------+ 
| A  | 1 | 100 | 
| B  | 2 |  10 | 
| C  | 1 |  80 | 
| C  | 2 |  15 | 
| D  | 2 |  20 | 
| E  | 1 |  75 | 
| E  | 2 |  10 | 
| F  | 1 |  90 | 
+--------+----+--------+ 

我希望做的是能夠與量上此表報告的列值分割基於該ID,所以會出現這樣的:

+--------+------+------+ 
| Client | ID 1 | ID 2 | 
+--------+------+------+ 
| A  | 100 |  | 
| B  |  | 10 | 
| C  | 80 | 15 | 
| D  |  | 20 | 
| E  | 75 | 10 | 
| F  | 90 |  | 
+--------+------+------+ 

我想關鍵是其中一個客戶同時具有ID 1和2會出現在單個行而不是多個。

任何想法的方式來做到這一點,將不勝感激。

回答

1
/* 
sql server 2012 
the code below can run at above 2000 
*/ 
set nocount on 
;with sourceData as 
(
    select * 
    from (values('A',1,100), 
       ('B',2,10), 
       ('C',1,80), 
       ('C',2,15), 
       ('D',2,20), 
       ('E',1,75), 
       ('E',2,10), 
       ('F',1,90))as b(Client,ID,Amount) 
) 
select Client,[1] as ID1,[2] as ID2 
from sourceData as a pivot(max(Amount) for ID in([1],[2]))AS b 



/* 
Client ID1   ID2 
------ ----------- ----------- 
A  100   NULL 
B  NULL  10 
C  80   15 
D  NULL  20 
E  75   10 
F  90   NULL 


*/ 
+0

我想不通,爲什麼我沒賺到+1 –

+0

這偉大的工作,謝謝! –

+0

謝謝...... T-T。 –

2

您可以使用金額情況下做一個條件的總和......構建

Select 
Client 
, ID1 = Sum(case when ID = 1 then Amount ELSE NULL end) 
, ID2 = Sum(case when ID = 2 then Amount ELSE NULL end) 
From MyTable 
Group by Client