在SQL Server中,如何在列中显示表行值?

在SQL Server中,如何在列中显示表行值?,sql,sql-server,Sql,Sql Server,我正在使用SQL Server 2012,我的表如下所示: Customer Status StatusType ---------------------------------------- 3 Ok personalInfo 3 Pending FinancialInfo 3 NeedUpdate CompanyInfo 要在此处获得结果,我需要一个SQL查询:

我正在使用SQL Server 2012,我的表如下所示:

Customer    Status         StatusType
----------------------------------------
  3         Ok             personalInfo
  3         Pending        FinancialInfo
  3         NeedUpdate     CompanyInfo
要在此处获得结果,我需要一个SQL查询:

Customer    PersonalInfo    FinancialInfo   CompanyInfo
---------------------------------------------------------
    3       Ok              Pending         NeedUpdate
输出

Customer    PersonalInfo    FinancialInfo   CompanyInfo
3             Ok             Pending         NeedUpdate


您只需使用Pivot或query将行转换为列。就是这样。有一个问题,Pivot in operator,I StatusType不是固定的,它们是动态的
Customer    PersonalInfo    FinancialInfo   CompanyInfo
3             Ok             Pending         NeedUpdate
DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.[StatusType]) 
            FROM #Table1 c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT customer, ' + @cols + ' from 

                #Table1
    PIVOT ( max([status])
      for [StatusType] in ([PersonalInfo], [FinancialInfo], [CompanyInfo])) AS pvt'


exec(@query)