调休统计表:(sno 自增)
sno USER_ID 请假结算范围 调休时长
1 L994 140416-140515 6
2 L994 140416-140515 2
3 L995 140416-140515 1
4 L995 140416-140515 4
5 L1593 140416-140515 3
加班明细表:(sno 自增)
sno USER_ID DATE 加班时长 冲抵调休时长
1 L1593 2014/4/16 0:00 4 0
2 L994 2014/4/16 0:00 3.5 0
3 L995 2014/4/16 0:00 2 0
4 L995 2014/4/17 0:00 2 0
5 L1593 2014/4/17 0:00 4 0
6 L994 2014/4/17 0:00 1 0
7 L995 2014/4/18 0:00 2 0
8 L995 2014/4/19 0:00 8 0
要做的是将【调休统计表】中的【调休时长】冲抵到【加班明细表】的冲抵到【冲抵调休时长】字段。
如上面的测试数据结果为:
sno USER_ID DATE 加班时长 冲抵调休时长
1 L1593 2014/4/16 0:00 4 3
2 L994 2014/4/16 0:00 3.5 3.5
3 L995 2014/4/16 0:00 2 2
4 L995 2014/4/17 0:00 2 2
5 L1593 2014/4/17 0:00 4 0
6 L994 2014/4/17 0:00 1 1
7 L995 2014/4/18 0:00 2 1
8 L995 2014/4/19 0:00 8 0
帮朋友个忙,自己没时间搞这些,谢谢各位,谢谢~~
------解决方案--------------------
看起来类似存库的先进先出、。
------解决方案--------------------
with a0 (sno,USERID,请假结算范围,调休时长) AS
(
SELECT 1,'L994','140416-140515',6 UNION ALL
SELECT 2,'L994','140416-140515',2 UNION ALL
SELECT 3,'L995','140416-140515',1 UNION ALL
SELECT 4,'L995','140416-140515',4 UNION ALL
SELECT 5,'L1593','140416-140515',3
)
,a1 AS
(
SELECT USERID,SUM(调休时长) 调休时长 FROM a0 GROUP BY USERID
)
,a2 (sno,USERID,DATE,加班时长,冲抵调休时长) AS