У меня есть таблица, которая содержит пользователей, там номера телефонов и тип телефонаПреобразование строк в столбцы с помощью в SQL Server
Таблица PersonPhone:
ID UserID PhoneType Phone
----- ------- ---- ------
1 101 1 #
2 101 2 #
3 102 1 #
4 102 3 #
5 103 1 #
6 103 2 #
7 103 3 #
8 104 1 #
9 104 3 #
10 104 3 #
Я пытаюсь создать отборное заявление который имеет результирующий набор, аналогичный приведенному ниже:
ID PhoneType1 PhoneType2 PhoneType3
------- ---- ------ ------
101 # # #
102 # # #
103 # # #
104 # # #
Есть ли все равно для этого? Я пробовал:
SELECT PersonID
, ISNULL(MAX(CASE phoneTypeId WHEN '2' THEN phone ELSE 0 END), 0) AS 'TYPE1'
, ISNULL(MAX(CASE phoneTypeId WHEN '3' THEN phone ELSE 0 END), 0) AS 'TYPE2'
, ISNULL(MAX(CASE phoneTypeId WHEN '5' THEN phone ELSE 0 END), 0) AS 'TYPE3'
FROM personPhone
GROUP BY personId
Какой тип данных вы храните в качестве номера телефона? –
Возможный дубликат [SQL Server: Транспонирование строк в столбцы] (http://stackoverflow.com/questions/20111418/sql-server-transpose-rows-to-columns) – rll
@rll - Это определенно обман. Человек, который разместил это, должен взглянуть на ответы в этом вопросе. – Dresden