2016-09-19 4 views
0

Ich habe viele verschiedene Fragen hier gelesen und ich habe diese nicht gefunden, auch wenn es so aussieht, als würden die Leute es manchmal tun. Was ich habe, sucht eine Tabelle wie folgt aus:Wie bekomme ich eine wiederholte Zeile und füge als Spalte in SQL hinzu?

Person_id Person_Phone_Number 
a   11545623 
b   21323545 
c   45654655 
d   54455896 
e   21458437 
f   14564680 
a   32545542 
c   98745682 
e   10589621 
g   23568954 
a   56468756 

Und was ich als die Ausgabe benötigen, ist dieses:

Person_id Person_Phone_Number New_Column_1 New_Column_2 
a   11545623    32545542  56468756 
b   21323545 
c   45654655    98745682 
d   54455896 
e   21458437    10589621 
f   14564680 
g   23568954 
+4

Das wäre eine Pivot-Abfrage, und die genaue m Die entsprechende Syntax hängt davon ab, welche DB Sie verwenden. –

+0

Hinzufügen zu @ MarcBs Kommentar - es ist _much_ einfacher, das in der Anzeigeebene (Bericht, Webseite, Formular usw.) zu tun, als in der Datenebene, die feste Spalten haben möchte. –

Antwort

0

IF SQL Server

;with cteBase as (
     Select *,RowNr = Row_Number() over (Partition By Person_id Order By Person_Phone_Number) 
     From @YourTable 
) 
Select Person_ID 
     ,Person_Phone_Number = max(case when RowNr=1 then Person_Phone_Number else '' end)  
     ,New_Column_1  = max(case when RowNr=2 then Person_Phone_Number else '' end)  
     ,New_Column_2  = max(case when RowNr=3 then Person_Phone_Number else '' end)  
From cteBase 
Group By Person_ID 
Order By 1 

Returns

Person_ID Person_Phone_Number New_Column_1 New_Column_2 
a   11545623    32545542  56468756 
b   21323545   
c   45654655    98745682 
d   54455896   
e   10589621    21458437 
f   14564680   
g   23568954   
+0

@a_horse_with_no_name Sie sind zu 100% korrekt. Aktualisiert. –

Verwandte Themen