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

问题描述 投票:0回答:1

我有一张表,其中包含一年的标准出勤数据

AttID 现在 缺席。 离开 生病了 标准注册号
1. 23 1 0 0 一月。 1
2. 25 0 0 0 一月。 2
3. 23 0 0 0 三月。 1
4. 21 3 0 1 三月。 2
所以......

我希望得到如下视图的结果:

标准要求 P A L S P A L S
1. 一月。 23 1 0 0 三月 23 0 0 0
2. 一月。 25 0 0 0 三月 21 3 0 1

我需要此视图 12 个月,我该怎么做?请帮助我

sql sql-server sql-server-2008-r2 pivot
1个回答
0
投票

您可以使用这样的查询:

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;
© www.soinside.com 2019 - 2024. All rights reserved.