2012-01-18 83 views
1

我有数据在SQL Server 2008中的表看起来像这样:SQL Server 2008的透视查询

enter image description here

我要转动它看起来像这样:

enter image description here

基本上我想对ReadTime和Coater进行分组,然后在DataType列上旋转。有人可以帮我用T-SQL来做到这一点吗?

+1

你真的想让我混乱这个问题与查询的所有迭代我试过了?那只会让你知道我已经尝试了一些东西。 – Hosea146 2012-01-18 15:41:08

+1

最成功的呢? – 2012-01-18 15:43:35

+1

@ Hosea146实际上通过显示您尝试过的查询来帮助社区了解是否改变您所做的工作会给您想要的结果。所以这不是浪费双方的时间。 – Taryn 2012-01-18 15:44:11

回答

6

也许这将帮助:

测试数据:

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') 

查询:

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 
+0

正是我需要的。它似乎完美地工作! – Hosea146 2012-01-18 16:04:04

+2

也许你可以接受答案呢? – Arion 2012-01-18 17:05:00