我无法转置此数据。我有一个开始和结束日期,但需要考虑每天使用的资源总数。我想转动数据,以便它可以计算项目的每一天和所需的资源数量。我已经发布了源数据的样子。我想我需要使用光标来解析数据,但我不确定如何计算开始和结束之间的每一天。任何帮助将不胜感激。
来源数据:
Project Start Finish ResourceA ResourceB
1000 1/1/2018 1/5/2018 10 5
1001 2/1/2018 2/1/2018 3 2
期望的结果:
Project Date ResourceA ResourceB
1000 1/1/2018 10 5
1000 1/2/2018 10 5
1000 1/3/2018 10 5
1000 1/4/2018 10 5
1000 1/5/2018 10 5
1001 2/1/2018 3 2
答案 0 :(得分:1)
首先创建一个日历表。一个有你可能需要的每个日期。
get_protectedC()
或者,使用Numbers表... (使用日期函数的SQL Server语法。)
SELECT
yourTable.Project,
calendar.CalendarDate,
yourTable.ResourceA,
yourTable.ResourceB
FROM
yourTable
INNER JOIN
calendar
ON calendar.CalendarDate BETWEEN yourTable.Start and yourTable.Finish
答案 1 :(得分:0)
在t-sql中,sys.all_objects可用于生成非常大的系列以进行交叉连接:
select project, dateadd(dd,n-1,start) as date, resourceA, resourceB
from source_data
inner join
(select ROW_NUMBER() OVER (ORDER BY [object_id]) as n
FROM sys.all_objects ) numbers on datediff(dd,start,finish)>=n-1
如果不使用T-SQL,只需使用任何其他大表。