达人帮我.
表如下:
gh rq zbs jbgs
810364 2006/2/21 8 0
800004 2006/4/17 8 2.5
810065 2006/7/13 8 0
810068 2006/2/14 8 2.5
810003 2006/10/25 8 2.5
. . . .
. . . .
. . . .
. . . .
. . . .
现在要做的就是
1.统计2006年所有员工每个月,每年的加班.要求是把每个月jbgs总计大于36的员工gh,以及月份输出来
2.把2006年jbgs总时超过(36*12)432的员工的gh输出来.
3.用2的结果和另外一张表(gzb)中的zgs.jbs比较.把不同的员工的GH.以及当月的月份输出来.
zbs=上表中一个月所有zbs之和
jbs=上表中所有jbgs之和(这两组数年据本来是一样的.但是GZB中有些数据手工改动过.所以想把不同的输出来.)
谢谢.新人.如果分不够.再开贴补上.
[解决办法]
1
select gh,year(rq),month(rq),sum(jbgs)
group by gh,year(rq),month(rq)
having sum(jbgs) > 36
2
select gh,year(rq),sum(jbgs)
group by gh,year(rq)
having sum(jbgs) > 36*12
3不明白
[解决办法]
--1\统计2006年所有员工每个月,每年的加班.要求是把每个月jbgs总计大于36的员工gh,以及月份输出来
select gh,convert(char(7),rq,111) YF,SUM(zbs) zbs,sum(jbgs) jbgs
--into GZB_MONTH
FROM GZMXB WHERE YEAR(rq)= '2006 '
group by gh,convert(char(7),rq,111)
having sum(jbgs) > 36
--2\把2006年jbgs总时超过(36*12)432的员工的gh输出来.
select gh,YEAR(rq) NF,SUM(zbs) zbs,sum(jbgs) jbgs
--into GZB_YEAR
FROM GZMXB WHERE YEAR(rq)= '2006 '
group by gh,YEAR(rq)
having sum(jbgs) > 432
--3\用2的结果和另外一张表(gzb)中的zgs.jbs比较.把不同的员工的GH.以及当月的月份输出来.
SELECT A.gh,B.gh,A.YF,B.YF,A.zbs,B.zbs,A.jbgs,B.jbgs
FROM GZB_MONTH A FULL JOIN gzb B ON A.gh=B.gh and A.YF=B.YF
WHERE A.zbs <> B.zbs OR A.jbgs <> B.jbgs