时间表创建的SQL表

时间:2013-01-24 14:19:30

标签: sql sql-server sql-server-2008 database-design

我正在使用Infopath创建时间表。数据将存储在数据库中,因此我必须创建一个表。这个时间表将全年使用。

我在创建SQL表时需要帮助。我想要这个时间表的表结构是:

Project_Category   Mon   Tue    Wed   Thu    Fri    Sat  Sun    Total
    Project 1   
    Project 2
    Project 3
    Project 4
    Project 5
    Other
    Total                                                                  

日期应该是日期(例如,2013年1月1日星期一),或者如果你有更好的方法,请建议我。

2 个答案:

答案 0 :(得分:0)

我不会将这些数据存储在一个表中。考虑使用多个表而不是单个表创建它。

例如,您可以拥有ProjectsProjectIdProjectName。然后,您可以轻松地将ProjectId字段与存储ProjectSummaryProjectIdDateField的{​​{1}}表格相关联。我不知道你的Total行是什么,但如果它是一个日期范围的计算,使用SQL来计算这些值,而不是将它存储在表中。

祝你好运 - 网上有很多资源可以开始使用SQL - 稍微搜索一下。

答案 1 :(得分:0)

正如sgeddes所建议的那样,多个表可能是更好的方法来解决这个问题。

就个人而言,我会避免每行超过1天,并且要灵活允许每天超过一次。

我将创建的结构如下:

Entry_ID INT IDENTITY(1,1) PRIMARY KEY
Timesheet_ID INT,
Project_ID INT,
DateTimeFrom DATETIME,
DateTimeTo DATETIME

这使得基于日期的计算变得更加简单。

例如。 6月20日至6月25日期间项目X的小时数将是如下查询:

SELECT SUM(DATEDIFF(MINUTES,DateTimeFrom,DateTimeTo)/60) AS [HOURS]
FROM MyTable
WHERE DateTimeFrom >= '2012-06-25' AND DateTimeTo <= '2012-06-29'