将列分隔成行(数据透视表?)

时间:2014-03-20 15:23:02

标签: mysql sql

给定一个表行,例如:

id  |  username  |  att7  |  att28  |  atttotal
1   |   12345    |   77   |    88   |     99

在SQL中是否存在一种方法(我现在正在使用MySQL,但实际上可以是任何数据库)来转换它,以便我的VIEW中的输出类似于:

id  |  username  |  type  |  period      | value
1   |   12345    |   Att  |    7 Days    |  77
2   |   12345    |   Att  |    28 Days   |  88
3   |   12345    |   Att  |    Total     |  99

我正在阅读关于PIVOT牌桌的信息,因为我觉得这可能是需要的,但到目前为止我无法弄清楚我是如何实现这一目标的。

干杯。

1 个答案:

答案 0 :(得分:1)

这是一个不透明的东西。这种天真的方式是使用union all

create view v as
    select id, username, 'Att' as type, '7 days' as period, att7 from table union all
    select id, username, 'Att' as type, '28 days' as period, att28 from table union all
    select id, username, 'Att' as type, 'total' as period, total from table;

如果你的表很大,有更有效的方法来编写这样的查询。