【问题标题】:PIVOT a Select queryPIVOT 选择查询
【发布时间】:2016-02-16 20:01:40
【问题描述】:

我是 SQL Server 编码新手,需要一些帮助。

我有一个 SELECT 语句,它包含三列,即更改的字段名称及其先前值和新值

FieldName   OldValue    NewValue
Age         21          22
Age         76          54
Color       Red         Blue

我正在尝试将 PIVOT 这个选择变成类似:

OldValueName   NewValueName  OldValueAge  NewValueAge  OldValueColor  NewValueColor etc.

你能帮帮我吗?

【问题讨论】:

  • 为此示例数据提供结果示例
  • 因此,如果您有 100 行来自该 SELECT 语句的结果,您希望将其 PIVOT 为 300 列 x 1 行结果?
  • 在水晶报表中使用交叉表

标签: sql-server sql-server-2008 sql-server-2012 crystal-reports-2008


【解决方案1】:

您可以通过以下方式使用 PIVOT。

DECLARE @tbl TABLE (
    FieldName VARCHAR(50),
    OldValue VARCHAR(50),
    Newvalue Varchar(50)
)

INSERT INTO @tbl ( FieldName, OldValue, NewVALUE )
SELECT 'AGE', '21','22'
UNION
SELECT 'AGE', '76','54'
UNION
SELECT 'color', 'red','blue'

SELECT * FROM @tbl

SELECT * FROM 
(
    SELECT FieldName, OldValue, NewValue  FROM @tbl
) AS S
PIVOT
(
    max(OldValue) FOR s.FieldName in ([AGE], [color])
) AS Pvt

【讨论】:

    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多