This is the original table columns:
SELECT
e18.customer_id,
CASE
WHEN PHONE_NUMBER_TYPE = 'PRIMPHONE' THEN 1
WHEN PHONE_NUMBER_TYPE = 'SECPHONE' THEN 2
WHEN PHONE_NUMBER_TYPE = 'HOME' THEN 3
WHEN PHONE_NUMBER_TYPE = 'CELLPHONE' THEN 4
WHEN PHONE_NUMBER_TYPE = 'WORK' THEN 5
WHEN PHONE_NUMBER_TYPE = 'PHONETLO' THEN 6
WHEN PHONE_NUMBER_TYPE = 'CIF' THEN 7
END as phone_type,
PHONE_NUMBER
FROM [spectrum].[dbo].[s_phone_number_e18] e18
WHERE e18.CUSTOMER_ID IN(38,118888)
ORDER BY CUSTOMER_ID, phone_type
CUSTOMER_ID phone_type PHONE_NUMBER
1 38 4 6812060
2 38 5 4873960
3 118888 3 6565657
4 118888 4 5675751
5 118888 5 7176873
- Итак, я могу преобразовать вышеприведенное из строк в столбцы, используя Pivot:
SELECT [CUSTOMER_ID],PRIMPHONE,SECPHONE,HOME,CELLPHONE,WORK,PHONETLO,CIF FROM
(SELECT customer_id,[PHONE_NUMBER_TYPE], PHONE_NUMBER FROM [spectrum].[dbo].[s_phone_number_e18] e18 wHERE e18.CUSTOMER_ID IN(38,118888)
) tab1
PIVOT
(
max(PHONE_NUMBER) For [PHONE_NUMBER_TYPE] IN ([PRIMPHONE],[SECPHONE],[HOME],[CELLPHONE],[WORK],[PHONETLO],[CIF])) AS Tab2
ORDER BY Tab2.customer_id
[CUSTOMER_ID] PRIMPHONE SECPHONE HOME CELLPHONE WORK PHONETLO CIF
38 NULL NULL NULL 6812060 4873960 NULL NULL
118888 NULL NULL 6565657 5675751 7176873 NULL NULL
- Задача, с которой я сталкиваюсь, состоит в том, как добиться успеха для каждого изИдентификатор клиента, следующий за заказом:
WHEN PHONE_NUMBER_TYPE = 'PRIMPHONE' THEN 1
WHEN PHONE_NUMBER_TYPE = 'SECPHONE' THEN 2
WHEN PHONE_NUMBER_TYPE = 'HOME' THEN 3
WHEN PHONE_NUMBER_TYPE = 'CELLPHONE' THEN 4
WHEN PHONE_NUMBER_TYPE = 'WORK' THEN 5
WHEN PHONE_NUMBER_TYPE = 'PHONETLO' THEN 6
WHEN PHONE_NUMBER_TYPE = 'CIF' THEN 7
for 1st 3 phone numbers.
Окончательный результат поиска:
[CUSTOMER_ID] Phone 1 Phone 2 Phone 3
38 6812060 4873960 NULL
118888 6565657 5675751 7176873
- Любая помощь высоко ценится.