大家好,好久没来了,提个问题吧

zsh0809 2014-07-29 04:41:40
调休统计表:(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

帮朋友个忙,自己没时间搞这些,谢谢各位,谢谢~~
...全文
141 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzw_0736 2014-07-29
  • 打赏
  • 举报
回复

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
(
SELECT 1,'L1593','2014/4/16 0:00',4,0 UNION ALL
SELECT 2,'L994','2014/4/16 0:00',3.5,0 UNION ALL
SELECT 3,'L995','2014/4/16 0:00',2,0 UNION ALL
SELECT 4,'L995','2014/4/17 0:00',2,0 UNION ALL
SELECT 5,'L1593','2014/4/17 0:00',4,0 UNION ALL
SELECT 6,'L994','2014/4/17 0:00',1,0 UNION ALL
SELECT 7,'L995','2014/4/18 0:00',2,0 UNION ALL
SELECT 8,'L995','2014/4/19 0:00',8,0
)
,a3 AS
(
SELECT a.*,(SELECT SUM(加班时长) FROM a2 WHERE USERID=a.USERID AND DATE<=a.DATE) LJ,ISNULL(b.调休时长,0) 调休时长
FROM a2 a
LEFT JOIN a1 b ON a.USERID=b.USERID
)
SELECT *,
CASE 
WHEN 调休时长>=LJ THEN 加班时长
WHEN 调休时长<LJ AND 调休时长-(LJ-加班时长)>0 THEN CASE when 调休时长>调休时长-(LJ-加班时长) THEN 调休时长-(LJ-加班时长) ELSE 调休时长 end
ELSE 0
END
FROM a3
--小F-- 2014-07-29
  • 打赏
  • 举报
回复
看起来类似存库的先进先出、。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧