如何在 unpivot 之前重命名列?SQL Server

3

我想在使用unpivot方法之前重命名一列。

我的表格如下:

列表项

id| value| ENE| FEB| MAR| ABR| MAY  
1 | dsads|2000|2334|2344|2344|2344

在使用 unpivot 后,我得到了类似于这样的内容。
id| value| month| amount
1 |  dads| ENE  | 2000
2 |  sadf| FEB  | 2334

但我希望得到类似于这样的东西

id| value| month| amount
1 |  dads| 01   | 2000
2 |  sadf| 02   | 2334

这是我的查询。

select 
    [año], [Empresa], [Region], [Suc], [CC], [Cuenta], 
    [Subcuenta], [Descripcion], Periodo, Importe
from 
    (select * from [dbo].['P Cargado$']) S
unpivot 
    (Importe for Periodo in
        ([ENE], [FEB], [MAR], [ABR], [MAY], [JUN], [JUL], [AGO], [SEP],[OCT], [NOV], [DIC])
    ) AS unpvt;

“sadf” 是从哪里来的?它不在 list item 中。 - SqlZim
1个回答

3

如果你使用cross apply(values ..)进行数据逆转,可以像这样操作:

select t.id, t.value, x.*
from t
cross apply (values (1,ene),(2,feb),(3,mar),(4,abr),(5,may)) x (Mnth,Amount)

rextester演示:http://rextester.com/SZDP50356

返回:

+----+-------+------+--------+
| id | value | Mnth | Amount |
+----+-------+------+--------+
|  1 | dsads |    1 |   2000 |
|  1 | dsads |    2 |   2334 |
|  1 | dsads |    3 |   2344 |
|  1 | dsads |    4 |   2344 |
|  1 | dsads |    5 |   2344 |
+----+-------+------+--------+

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接