SQL Pivot со строкой

У меня есть две таблицы в SQL Server :Клиент и адрес

Таблица клиентов:

CustomerID  FirstName  LastName
----------- ---------- ----------
1           Andrew     Jackson         
2           George     Washington

Таблица адресов:

AddressID   CustomerID  AddressType City
----------- ----------- ----------- ----------
1           1           Home        Waxhaw     
2           1           Office      Nashville    
3           2           Home        Philadelphia

Это вывод, который мне нужен:

CustomerID  Firstname  HomeCity      OfficeCity
----------- ---------- ----------    ----------
1           Andrew     Waxhaw        Nashville
2           George     Philadelphia  Null

Это мой запрос, но я не получаю правильного результата:

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

Вот результат, который я получаю:

CustomerID  Firstname  HomeCity      OfficeCity
----------- ---------- ----------    ----------
1           Andrew     Waxhaw        NULL
1           Andrew     NULL          Nashville
2           George     Philadelphia  Null

Как видите, клиент 1 появляется дважды в конечном результате. Можно ли получить только одну строку для каждого клиента?

Я искал этот пример, но не помогло:http://stackoverflow.com/questions/6267660/sql-query-to-convert-rows-into-columns

Спасибо

15
задан kthiagar 25 April 2012 в 16:12
поделиться