2016-11-18 1 views
0

я записи приходит вроде как в картинеНе нулевое значение, необходимое во всех столбце в SQL сервере

Запрос не работает:

SELECT 
    'Business_Details' AS 'Business Phone','Business Email' 
FROM 
    (SELECT 
     TELCOM_NAME, TELCOM_ADDRESS 
    FROM 
     [mi_s_data].[dbo].[TEMP_MOS_CONTACT] 
    ) AS SourceTable 
PIVOT 
(
MAX(TELCOM_ADDRESS) 
FOR TELCOM_NAME IN ('Business_Phone','Business_Email') 
) AS PivotTable; 

мне нужен один запрос сервера SQL, который может дать выход, как показано на этой картинке: enter image description here

+1

Ваш образец данных состоит из четырех столбцов, но три названия столбцов. –

ответ

0

Что-то вроде этого, возможно?

Select ... 
case when alias1.TELCOM_ADDRESS is null 
    then (select alias2.TELCOM_ADDRESS 
      from [mi_s_data].[dbo].[TEMP_MOS_CONTACT]) alias2 
      where alias1.Contact_id=alias2.Contact_id 
      and alias2.TELCOM_ADDRESS is not null) 
     ) 
    else alias1.TELCOM_ADDRESS 
    end as TELCOM_ADDRESS 
from [mi_s_data].[dbo].[TEMP_MOS_CONTACT]) alias1 
+0

Добро пожаловать в SO. Попробуйте взглянуть, как [правильно отформатировать ответ] (http://stackoverflow.com/help/formatting) – gus27

0

Я хотел бы предложить только с помощью условной агрегации:

select contact_id, 
     max(case when telcom_name = 'Business Phone' then telcom_address end) as business_phone, 
     max(case when telcom_name = 'Business Email' then telcom_address end) as business_email 
from mi_s_data.dbo.temp_mos_contact tmc 
group by contact_id;