我有一个从表a中选择值的视图
`SELECT
A.[Source]
,cast([ID] as varchar) AS ID
,CASE
WHEN A.Source='1' THEN 'A'
ELSE 'R'
END AS 'Type'
,[StartDate]
,[StartPeriod]
,[EndDate]
,[EndPeriod]
,[StatusDescription]
FROM [dbo].[A]
他们让我做一些转换,比如在这个算法中:
如果源=8,则
将初始记录按天数拆分为多行
a、 startperiod=“am”从第二条记录到最后一条记录。
a、 endperiod=“pm”除了最后一个。
例如,如果:
员工x的开始日期为:startdate startperiod enddate 26/04/2021 9:00:00 am 28/04/2021 9:00:00
会的
26/04/2021 9:00:00 AM 26/04/2021 9:00:00
27/04/2021 9:00:00 AM 27/04/2021 9:00:00
28/04/2021 9:00:00 AM 28/04/2021 9:00:00
1条答案
按热度按时间u5i3ibmn1#
递归cte是使用标准(ish)sql执行此操作的简单方法:
如果给定员工的工作时间超过100天,则需要添加
option (maxrecursion 0)
.