Sql server SQL交叉表查询-非数字数据
我已经搜索了SQL交叉表信息和示例,但几乎所有这些都是基于数字数据的交叉表/数据透视,而我的数据不是数字。我正在使用MS SQL Server 我在一个表中有以下数据: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
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
非常感谢。我从未想过使用最小值或最大值作为聚合函数!