Sql 将列转置为行而不求和
我有下表:Sql 将列转置为行而不求和,sql,sql-server,pivot,Sql,Sql Server,Pivot,我有下表: id name year month value code 1 George 1991 1 675 1234 2 George 1991 2 675 1234 3 George 1991 2 675 1234 5 George 1991
id name year month value code
1 George 1991 1 675 1234
2 George 1991 2 675 1234
3 George 1991 2 675 1234
5 George 1991 3 675 1234
... ... ... ... ... ...
但我必须这样显示,这样我就可以连续几个月使用一个id:
id year name code jan feb mar apr ... dec
1 1991 George 1234 675 675 675 0 0
2 1991 George 1234 0 675 0 0 0
... ... ... ... ... ... ... ... ... ...
问题是:同一个月内可能有多个值,如果不将本例中的值相加,我无法创建该结构,二月,我不希望这样。有没有办法使用pivot或其他工具来实现这一点???使用pivot会有什么问题 通过这种查询,当ID、名称、代码、年份和月份之间存在唯一性时,您将得到您所期望的结果
select id, name, code, year,
[1] as JAN,
[2] as FEB,
...
[11] as NOV,
[12] as DEC
from (
select id, name, code, year, month, value
from <table>
)
pivot (
max (value) for month in ([1],[2], ... [11],[12])
)
如果使用PIVOT,会有什么问题 通过这种查询,当ID、名称、代码、年份和月份之间存在唯一性时,您将得到您所期望的结果
select id, name, code, year,
[1] as JAN,
[2] as FEB,
...
[11] as NOV,
[12] as DEC
from (
select id, name, code, year, month, value
from <table>
)
pivot (
max (value) for month in ([1],[2], ... [11],[12])
)
如果您希望保持每个月份的多个值,则应考虑在使用枢轴之前应用RoWoL编号:
看 结果是:| NAME | YEAR | CODE | JAN | FEB | MAR |
------------------------------------------
| George | 1991 | 1234 | 675 | 675 | 675 |
| George | 1991 | 1234 | 0 | 675 | 0 |
如果您希望保持每个月份的多个值,则应考虑在使用枢轴之前应用RoWoL编号:
看 结果是:| NAME | YEAR | CODE | JAN | FEB | MAR |
------------------------------------------
| George | 1991 | 1234 | 675 | 675 | 675 |
| George | 1991 | 1234 | 0 | 675 | 0 |
您使用的是什么风格的数据库?您使用的是什么风格的数据库?