Sql 根据数据将一列拆分为多列

Sql 根据数据将一列拆分为多列,sql,sql-server,sql-server-2008-r2,pivot,Sql,Sql Server,Sql Server 2008 R2,Pivot,我有一个表格,里面有一年的std出勤数据 AttID Present absent. leave sick month StdRegNo 1. 23 1 0 0 JAN. 1 2. 25 0 0 0 JAN. 2 3. 23 0 0 0 MAR. 1 4. 21 3 0 1 MAR. 2 SO

我有一个表格,里面有一年的std出勤数据

AttID   Present absent. leave sick month  StdRegNo
1.      23      1       0     0    JAN.   1
2.      25      0       0     0    JAN.   2
3.      23      0       0     0    MAR.   1
4.      21      3       0     1    MAR.   2
SO ON.......
我想得出如下观点:

StdReq month  P   A   L    S    month  P   A    L    S
1.     Jan.   23  1   0    0    Mar    23  0    0    0
2.     Jan.   25  0   0    0    Mar    21  3    0    1

我需要这个视图12个月我怎么能这样做?请帮助我

您可以使用如下查询:

select StdRegNo
    -- January info
    ,max(case when [month] = 'JAN' then Present end) JAN_P
    ,max(case when [month] = 'JAN' then [absent] end) JAN_A
    ,max(case when [month] = 'JAN' then leave end) JAN_L
    ,max(case when [month] = 'JAN' then sick end) JAN_S
    -- March info
    ,max(case when [month] = 'MAR' then Present end) MAR_P
    ,max(case when [month] = 'MAR' then [absent] end) MAR_A
    ,max(case when [month] = 'MAR' then leave end) MAR_L
    ,max(case when [month] = 'MAR' then sick end) MAR_S
    -- And so on ...
from yourTable
group by StdRegNo;

您的问题是关于数据透视的,您可以在DBMS中搜索它并找到它;)。有人能给我举个例子吗?你们的数据库管理系统是什么?MySQL、SQL Server、Oracle等等?我的RDBMS是SQL server 2008r2