在SQL Server 2008中执行PIVOT表

时间:2014-10-13 17:08:28

标签: sql sql-server sql-server-2008

似乎应该很容易更改这一行数据:

SalesTotal Refunds  Discount Taxes  
63093.05   -102.52  3905.11  2523.32

进入这个:

SalesTotal  63093.05
Refunds      -102.52
Discount     3905.11
Taxes        2523.32

在SQL中使用PIVOT。 但是......在我发现的所有例子中;

http://www.izenda.com/Site/KB/FAQ/How-do-I-create-a-pivot-table-in-Microsoft-SQL- http://blog.sqlauthority.com/2008/05/22/sql-server-pivot-table-example/ http://www.mssqltips.com/sqlservertip/1019/crosstab-queries-using-pivot-in-sql-server/ http://msdn.microsoft.com/en-us/library/ms177410(SQL.105).aspx 等....

需要在PIVOT命令中进行添加聚合 我想做的就是把桌子放在一边。

这样做的任何方式?

2 个答案:

答案 0 :(得分:2)

您应该寻找UNPIVOT。以下是使用CROSS APPLY获取所需结果的方法(假设您的所有列都具有兼容的数据类型):

SELECT  x.Col,
        x.Value
FROM YourTable t
CROSS APPLY 
(
    VALUES
        ('SalesTotal', t.SalesTotal),
        ('Refunds', t.Refunds),
        ('Discount', t.Discount),
        ('Taxes', t.Taxes)
) x(Col, Value);

答案 1 :(得分:1)

您需要UNPIVOT而不是PIVOT才能将列旋转为行

SELECT Type, value from
(SELECT * from Table1) T
UNPIVOT
( value for Type in ( [SalesTotal], [Refunds], [Discount], [Taxes])
) unpvt