2016-11-18 65 views
0

我已经记录来等作为画面在SQL Server中的所有列所需的非空值

查询不工作:

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 Server查询,可以给输出像所示在这张照片中: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;