27,579
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE #A
(
ID VARCHAR(20) ,
加班人 VARCHAR(200) ,
加班内容 VARCHAR(200) ,
开始时间 VARCHAR(20) ,
结束时间 VARCHAR(20) ,
予以调休时间 INT,
时间单位 VARCHAR(200)
)
INSERT INTO #A
VALUES ( 'XJ0001', '张三', '整理报表', '2017/06/17 8:30:00',
'2017/06/18 18:00:00', 8, '时' ),
( 'XJ0002', '李四', '参加培训', '2017/06/09 8:30:00',
'2017/06/10 12:00:00', 10, '时' )
;WITH cte AS (
SELECT a.ID ,
a.加班人 ,
a.加班内容 ,
a.开始时间 ,
a.结束时间 ,
CASE WHEN a.予以调休时间 - 4 > 4 THEN 4
ELSE a.予以调休时间 - 4
END AS 予以调休时间 ,
a.时间单位 ,
a.予以调休时间 AS 剩余时间
FROM #A a
UNION ALL
SELECT a.ID ,
a.加班人 ,
a.加班内容 ,
a.开始时间 ,
a.结束时间 ,
CASE WHEN b.剩余时间 - 4 > 4 THEN 4
ELSE b.剩余时间 - 4
END AS 予以调休时 ,
a.时间单位 ,
b.剩余时间 - 4
FROM #A a
JOIN cte b ON b.ID = a.ID
WHERE b.剩余时间 - 4 > 0
)
SELECT RTRIM(Id) + '-'
+ RTRIM(ROW_NUMBER() OVER ( PARTITION BY Id ORDER BY Id )) AS Id ,
加班人 ,
加班内容 ,
开始时间 ,
结束时间 ,
予以调休时间 ,
时间单位
FROM cte
ORDER BY ID
DROP TABLE #A
declare @a table(id varchar(20),加班人 varchar(200),加班内容 varchar(200),开始时间 varchar(20),结束时间 varchar(20),予以调休时间 decimal(9, 2),时间单位 varchar(200))
insert into @a values
('xj0001','张三','整理报表','2017/06/17 8:30:00','2017/06/18 18:00:00',8,'时'),
('xj0002','李四','参加培训','2017/06/09 8:30:00','2017/06/10 12:00:00',10,'时')
select a.id+'-'+rtrim(number) as id,a.加班人,a.加班内容,a.开始时间,a.结束时间,(case when number*4<=a.予以调休时间 then 4 else a.予以调休时间 -(number-1)*4 end) [予以调休时间],a.时间单位 from @a a,master..spt_values where type='p' and number>0 and (number-1)*4<a.予以调休时间
CREATE TABLE #A
(
ID VARCHAR(20) ,
加班人 VARCHAR(200) ,
加班内容 VARCHAR(200) ,
开始时间 VARCHAR(20) ,
结束时间 VARCHAR(20) ,
予以调休时间 INT,
时间单位 VARCHAR(200)
)
INSERT INTO #A
VALUES ( 'XJ0001', '张三', '整理报表', '2017/06/17 8:30:00',
'2017/06/18 18:00:00', 8, '时' ),
( 'XJ0002', '李四', '参加培训', '2017/06/09 8:30:00',
'2017/06/10 12:00:00', 10, '时' )
;WITH cte AS (
SELECT a.ID ,
a.加班人 ,
a.加班内容 ,
a.开始时间 ,
a.结束时间 ,
CASE WHEN a.予以调休时间 - 4 > 4 THEN 4
ELSE a.予以调休时间 - 4
END AS 予以调休时间 ,
a.时间单位 ,
a.予以调休时间 AS 剩余时间
FROM #A a
UNION ALL
SELECT a.ID ,
a.加班人 ,
a.加班内容 ,
a.开始时间 ,
a.结束时间 ,
CASE WHEN b.剩余时间 - 4 > 4 THEN 4
ELSE b.剩余时间 - 4
END AS 予以调休时 ,
a.时间单位 ,
b.剩余时间 - 4
FROM #A a
JOIN cte b ON b.ID = a.ID
WHERE b.剩余时间 - 4 > 0
)
SELECT * FROM cte ORDER BY ID
DROP TABLE #A