SQL Pivot mit String

Ich habe zwei Tabellen in SQL Server: Kunde und Adresse

Kundentabelle:

<code>CustomerID  FirstName  LastName
----------- ---------- ----------
1           Andrew     Jackson         
2           George     Washington
</code>

Adresstabelle:

<code>AddressID   CustomerID  AddressType City
----------- ----------- ----------- ----------
1           1           Home        Waxhaw     
2           1           Office      Nashville    
3           2           Home        Philadelphia
</code>

Dies ist die Ausgabe, die ich brauche:

<code>CustomerID  Firstname  HomeCity      OfficeCity
----------- ---------- ----------    ----------
1           Andrew     Waxhaw        Nashville
2           George     Philadelphia  Null
</code>

Dies ist meine Frage, aber sie liefert nicht das richtige Ergebnis:

<code>SELECT CustomerID, Firstname, HOme as HomeCity, Office as OfficeCity FROM 
   (SELECT C.CustomerID, C.FirstName, A.AddressID, A.AddressType, A.City 
    FROM Customer C, Address A 
    WHERE C.CustomerID = A.CustomerID)as P
PIVOT (MAX(city) FOR AddressType in ([Home],[Office])) as  PVT
</code>

Dies ist das Ergebnis, das ich erhalte:

<code>CustomerID  Firstname  HomeCity      OfficeCity
----------- ---------- ----------    ----------
1           Andrew     Waxhaw        NULL
1           Andrew     NULL          Nashville
2           George     Philadelphia  Null
</code>

Wie Sie sehen, taucht Kunde 1 im Endergebnis zweimal auf. Ist es möglich, nur eine Zeile pro Kunde zu erhalten?

Ich habe dieses Beispiel nachgeschlagen, aber nicht geholfen: http: //stackoverflow.com/questions/6267660/sql-query-to-convert-rows-into-columns

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage