使用自定义名称作为 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
如何用单列旋转 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