没有汇总转换2X2表的PIVOT

问题描述

我将下表命名为客户

number name 123 Andy

,我想将其转换为此:

name Andy number 123

如何在sql上使用数据透视表?

我尝试了以下方法,但没有成功:

SELECT name,Andy
FROM
(
  SELECT number,name
  FROM Customer
)
t
pivot
(number(123)
FOR name IN (Andy))
AS pivot_table;

谁能告诉我我在这里做错了什么吗? 谢谢。

解决方法

什么样的数据库?

对于SQL Server,我会这样做:

SELECT IIF(n = 1,'Name','Number') [ColumnName],IIF(n = 1,[Name],CAST([number] AS VARCHAR(100))) [Value]
FROM Customer  a
    CROSS JOIN (VALUES (1),(2)) b (n)
,

您想要做的是取消数据。在SQL Server中,我建议使用CROSS APPLY-横向联接的语法:

SELECT v.*
FROM Customer c CROSS APPLY
     (VALUES ('Name',Name),('Number',CAST(number as VARCHAR(255)))
     ) v(col,value);