【问题标题】:SQL Server 2008 Pivot QuerySQL Server 2008 透视查询
【发布时间】:2012-01-18 15:31:16
【问题描述】:

我在 SQL Server 2008 表中有如下所示的数据:

我想让它看起来像这样:

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

【问题讨论】:

  • 你真的希望我用我尝试过的所有查询迭代来混淆这个问题吗?那只会向你展示我实际上已经尝试过一些东西。
  • 最成功的怎么样?
  • @Hosea146 实际上通过显示您尝试过的查询来帮助社区了解更改您所做的事情是否会给您带来想要的结果。所以双方都不会浪费时间。

标签: sql sql-server sql-server-2008 tsql pivot


【解决方案1】:

也许这会有所帮助:

测试数据:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多