使用自定义名称作为 columnNames 的数据透视表 table

Pivot table with custom Name as columnNames

如何用单列旋转 table。

我的 select 查询的结果集包含单列和 3 行。 即我的 select 查询看起来像:-

contactList table have following columns.
ContactID, PhNumbers, PhTYpe, ContactPersonID

select PhNumbers,PhType from contactList where ContactPersonID=3

PhNumbers     PhType
1234567890      1
3456789013      2
4545466756      3

这3行对应3种phone数字

我需要这样的输出

homePhone     MobilePhone     WorkPhone
1234567890    3456789013      4545466756

得到答案。感谢大家的帮助。

SELECT [1] as HomePhone, [2] as MobilePhone,[3] as WorkPhone,
FROM
  (select PhNumbers,PhType from contactList where ContactPersonID=3) AS     SourceTable
PIVOT
(
MAX(PhNumbers)
FOR PhType IN ([1],[2],[3])
) AS PivotTable;
  DECLARE
    @SQL varchar(MAX),
    @ColumnList varchar(MAX)

SELECT @ColumnList=
       COALESCE(@ColumnList + ',','') + QUOTENAME(PhNumbers)
FROM
(
       SELECT DISTINCT PhNumbers
       FROM contactList 
) T


SET @SQL = '
WITH PivotData AS
(
       SELECT PhNumbers
       FROM contactList
)
SELECT
    ' + @ColumnList + '
FROM
    PivotData
PIVOT
(
    MAX(PhNumbers)
    FOR PhNumbers
    IN (' + @ColumnList + ')
) AS PivotResult'

EXEC (@SQL)

试试这个查询

SELECT 1,2,3 从 (SELECT PhNumbers, PhType FROM contactList where ContactPersonID=3) a PIVOT(MAX(PhNumbers) FOR PhType IN(1, 2、 3)) r