Hos*_*146 1 sql t-sql sql-server pivot sql-server-2008
我在SQL Server 2008表中有数据如下所示:

我想将它转换为如下所示:

基本上我想在ReadTime和Coater上进行分组,然后在DataType列上进行透视.有人可以帮我用T-SQL来做这件事吗?
也许这会有所帮助:
测试数据:
DECLARE @tbl TABLE
(
ReadTime DATETIME,
Coater VARCHAR(100),
Value FLOAT,
DateType VARCHAR(100)
)
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11A-COATER',1,'FCDAOpside473')
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11A-COATER',1,'FCDABackside473')
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11A-COATER',0,'FCDAOpside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11A-COATER',0.9,'FCDABackside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11B-COATER',1,'FCDAOpside473')
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11B-COATER',2,'FCDABackside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11B-COATER',2.9,'FCDAOpside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:01','PBG11B-COATER',0,'FCDABackside473')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11A-COATER',1,'FCDAOpside473')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11A-COATER',1,'FCDABackside473')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11A-COATER',0,'FCDAOpside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11A-COATER',0.9,'FCDABackside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11B-COATER',1,'FCDAOpside473')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11B-COATER',2,'FCDABackside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11B-COATER',2.9,'FCDAOpside472')
INSERT INTO @tbl VALUES('2012-10-01 13:28:41','PBG11B-COATER',0,'FCDABackside473')
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT
*
FROM
(
SELECT
ReadTime,
Coater,
DateType,
Value
FROM @tbl AS tbl
) AS SourceTable
PIVOT
(
MIN(Value)
FOR DateType IN
(
[FCDAOpside472],
[FCDAOpside473],
[FCDABackside472],
[FCDABackside473]
)
)AS PivotTable
ORDER BY
ReadTime
Run Code Online (Sandbox Code Playgroud)