使用GridViews和Groupby管理数据
|
我正在使用带有SQL Server后端的ASP.NET(C#)GridView和模板字段开发时间表报告应用程序。我基本上是在抓取员工本周的任务清单,使用RowDataBound在GridView中循环,并检查EndTime是否落在Sun-Sat上,然后将那些Hours / Minutes放置在该列标签中。您可以在下面看到我的GridView标头的示例(对格式感到抱歉)。
Type|Hours|Minutes|StartTime|EndTime|Sun|Mon|Tue|Wed|Thu|Fri|Sat|Total
问题是我的groupby不能将我的任务组合在一起,因为我的StartTime / EndTimes是唯一的,但是我需要将它们拉回去,以便可以检查它属于哪一天,然后填充该列(如您所见,这两个它在下面返回的行)。我认为可能存在一种创建第二GridView并根据第一Gridview中的某些值填充它的方法。还有其他人偶然发现这样的问题吗?
SELECT
C.Task,
CONVERT(VARCHAR(10), A.StartTime, 101) As StartTime,
CONVERT(VARCHAR(10), A.EndTime, 101) As EndTime,
SUM(DATEDIFF(n, A.StartTime, A.EndTime)) / 60 AS Hours,
SUM(DATEDIFF(n, A.StartTime, A.EndTime)) % 60 AS Minutes
FROM dbo.Timesheet A, dbo.Employees B,
dbo.TimeSheet_Master C
WHERE A.CreatedBy = B.ContactId
AND A.Task = C.Task
AND (B.ContactId =@ContactId)
AND (A.StartTime >= @StartTime)
AND (A.EndTime <= @EndTime)
GROUP BY CONVERT(VARCHAR(10), A.StartTime, 101), CONVERT(VARCHAR(10), A.EndTime, 101), C.Task;
Task StartTime EndTime Hours Minutes
-------------------------------------------------------
Install 05/17/2011 05/17/2011 1 0
Install 05/18/2011 05/18/2011 1 30
没有找到相关结果
已邀请:
2 个回复
哭木算
我从Kodyaz Development Services创建了一个GetWeekDayNameOfDate函数,以获取星期几。 我首先创建了一个摘要查询,如下所示:
这将为我提供有关任务和员工的摘要。它将显示整个持续时间的开始日期和结束日期以及多少小时和分钟。 我的结果将是:
接下来,我创建了一个详细数据透视查询,以汇总一周中每一天所花费的小时数。
我的结果将是:
在船尾我将我的两个查询合并在一起以获取整个图片
这样,我将得到以下结果:
提醒您,我几乎忽略了会议记录部分,但我希望至少这对您有帮助。
拟僚疽刊剔