我们有一个表,我想将该表中的一行拆分成多行。 如果你在下面看到。那是我桌子上的一排。我们正在计算资源加载,我想将此行拆分到结果表中,如下图所示。
我将负责计算周开始日期和时间,告诉我如何在sql server 2005中将行拆分为多行。
在这个例子中,大卫从3月3日到3月19日工作了25个小时。
这意味着如果我们按工作周数划分,则为2周。
从3月7日开始的一周到3月11日结束的一周,然后是从3月14日到3月18日结束的一周。
根据工作天数与工作天数的比例分割小时数。
答案 0 :(得分:0)
你可以做的是有一个包含周项目的表格,如
CREATE TABLE WeeKDays ( WeekStartDate date, WeekEndDate date);
现在加入你的表,如
SELECT
Task_ID,Name, WeekStartDate, WeekEndDate
-- Add logic for splitting hours
, (hours/workdays)*
CASE
WHEN (T.StartDate >= W.WeekStartDate AND T.StartDate <= W.WeekEndDate) THEN DATEDIFF(d,T.StartDate,W.WeekEndDate)
WHEN (T.EndDate >= W.WeekStartDate AND T.EndDate <= W.WeekEndDate) THEN DATEDIFF(d,W.WeekStartDate,T.StartDate)
WHEN (T.StartDate <W.WeekStartDate AND T.EndDate>W.WeeKEndDate) THEN 7
--assuming 7 working days
END as Hours
FROM Tasks T LEFT JOIN WeekDays W ON
(T.StartDate >= W.WeekStartDate AND T.StartDate <= W.WeekEndDate)
OR (T.EndDate >= W.WeekStartDate AND T.EndDate <= W.WeekEndDate)
OR (T.StartDate <W.WeekStartDate AND T.EndDate>W.WeeKEndDate)