原数据表样式:
proid 社员番号 社员区分 年月 上班天数
1001 100 小明 一月 19
1002 101 小红 一月 20
1001 100 小明 二月 22
1002 101 小红 二月 23
1001 100 小明 三月 24
1002 101 小红 三月 24
执行代码:
SELECT a.proid ,a.社员番号, a.社员区分,b.一月,c.二月,ISNULL( d.三月,0) as 三月 ,(b.一月+c.二月+ISNULL( d.三月,0)) as 总计
FROM (
SELECT DISTINCT proid ,社员番号 , 社员区分 FROM test
)a LEFT JOIN
(
SELECT proid,社员番号,社员区分,作业时间 as 一月 FROM test WHERE 年月='1月'
)b ON a.社员番号=b.社员番号 AND a.社员区分 = b.社员区分
LEFT JOIN
(
SELECT proid,社员番号,社员区分,作业时间 as 二月 FROM test WHERE 年月='2月'
)c ON a.社员番号=c.社员番号 AND a.社员区分=c.社员区分
LEFT JOIN
(
SELECT proid,社员番号,社员区分,作业时间 as 三月 FROM test WHERE 年月='3月'
)d ON a.社员番号=d.社员番号 AND a.社员区分=d.社员区分
执行后数据表:
proid 社员番号 社员区分 一月 二月 三月
1001 100 小明 19 22 24
1002 101 小红 20 23 24