Sql server SQL交叉表查询-非数字数据

Sql server SQL交叉表查询-非数字数据,sql-server,crosstab,Sql Server,Crosstab,我已经搜索了SQL交叉表信息和示例,但几乎所有这些都是基于数字数据的交叉表/数据透视,而我的数据不是数字。我正在使用MS SQL Server 我在一个表中有以下数据: DEVICE DATATYPE DATA ------ -------- ---- ABC RELEASE-DATE 10/01/2013 ABC VERSION 01A ABC BUILD-DATE 11/03/2014 ABC T

我已经搜索了SQL交叉表信息和示例,但几乎所有这些都是基于数字数据的交叉表/数据透视,而我的数据不是数字。我正在使用MS SQL Server

我在一个表中有以下数据:

DEVICE  DATATYPE        DATA
------  --------        ----
ABC     RELEASE-DATE    10/01/2013
ABC     VERSION         01A
ABC     BUILD-DATE      11/03/2014
ABC     TYPE            PROD
DEF     RELEASE-DATE    06/19/2014
DEF     VERSION         02G
DEF     BUILD-DATE      08/07/2014
GHI     RELEASE-DATE    12/11/2013
GHI     VERSION         01F
GHI     BUILD-DATE      01/03/2014
GHI     TYPE            DEV
JKL     RELEASE-DATE    10/01/2013
JKL     VERSION         01A
JKL     BUILD-DATE      06/25/2014
JKL     TYPE            PROD
我期望的输出如下所示:

DEVICE  RELEASE-DATE    VERSION     BUILD-DATE  TYPE
------  ------------    -------     ----------  ----
ABC     10/01/2013      01A         11/03/2014  PROD
DEF     06/19/2014      02G         08/07/2014  
GHI     12/11/2013      01F         01/03/2014  DEV
JKL     10/01/2013      01A         06/25/2014  PROD
我一直在使用VLOOKUPS在Excel中手动完成这项工作,但如果可能的话,我希望有一个使用SQL的解决方案

有人能帮我吗?提前谢谢

对非数字数据使用
MAX
(或
MIN
):

SELECT *
FROM   MyTable
PIVOT  (MAX(Data)
          FOR DataType IN ([RELEASE-DATE], [Version], [BUILD-DATE], [TYPE])) pvt

使用将行转换为列的
pivot

SELECT DEVICE, [RELEASE-DATE],[VERSION],[BUILD-DATE],[TYPE] FROM Table1
PIVOT
( max(DATA) for DATATYPE in ( [RELEASE-DATE],[VERSION],[BUILD-DATE],[TYPE])
)pvt

非常感谢。我从未想过使用最小值或最大值作为聚合函数!