原结果集
这是一个医院的收卫生数据表
月        科室     岗位      名称     场景            擦手     洗手      手套    无操作
4 BICU 医生 呼吸 cc 接触病人前 0 1 0 0
4 BICU 医生 医生aa 接触病人前 1 0 0 0
5 BICU 医生 呼吸 cc 接触病人后 0 1 0 0
5 BICU 医生 护士bb 接触病人后 0 1 1 2
5 BICU 医生 护士bb 接触病人前 0 1 0 1
5 BICU 医生 护士bb 接触体液后 1 1 0 0
5 BICU 医生 护士bb 接触物品后 0 1 0 1
5 BICU 医生 护士bb 无菌操作前 1 1 0 0要根据不同的场景转换显示 
共有5个场景 --接触病人前 --无菌操作前 --接触体液后 --接触病人后 --接触物品后
根据每个人的每个场景把(擦手 洗手 手套 无操作) 重新转成列头
下面是部分列头
月  科室 岗位 名称 接触病人前擦手 接触病人前洗手 接触病人前手套 接触病人前无操作 接触病人后擦手 接触病人后洗手 接触病人后手套 接触病人后无操作……

解决方案 »

  1.   


    select 月,科室,岗位,名称,
    sum( case when 场景='接触病人前'  then 擦手 else 0 end) 触病人前擦手,
    sum(case when 场景='接触病人前'  then 洗手 else 0 end)  触病人前洗手,
    --加其他的
    from 表名
    group by 月,科室,岗位,名称
      

  2.   

    4 BICU 医生 呼吸 cc 接触病人前 0 1 0 0
    4 BICU 医生 医生aa 接触病人前 1 0 0 0
    ……-》
                          接触病人前4个数据 接触病人后4个数据 ……5个场景
    4 BICU 医生 呼吸 cc   0 1 0 0        1 0 0 0    …… 各个场景对应的4个数据
    4 BICU 医生 医生 aa   1 0 0 0        3 5 2 7    …… 各个场景对应的4个数据
    5 BICU 医生 医生 aa   1 0 0 3        3 5 2 6    …… 各个场景对应的4个数据
    ……