我正在寻找从MySQL数据库创建以下图表。我知道如何实际创建图表(使用Excel或类似程序),我的问题是如何获取创建图表所需的数据。在此示例中,我可以看到1月1日有60张票处于绿线所示的状态。
我需要跟踪日期范围内项目的票证的历史状态。日期范围由项目经理确定(本例中为1月1日至1月9日)。
对于每张票,我都有以下一组历史数据。每次票证中发生某些更改(状态,描述,受让人,客户更新以及此问题中未显示的其他属性)时,都会在数据库中创建一个“时间戳记”条目。
ticket_num status_changed_date from_state to_state 123456 2011-01-01 18:03:44-1 123456 2011-01-01 18:10:26 1 2 123456 2011-01-01 14:37:10 2 2 123456 2011-01-02 07:55:44 2 3 123456 2011-01-03 06:12:18 3 2 123456 2011-01-04 19:03:43 3 3 123456 2011-01-05 02:05:24 3 4 123456 2011-01-06 18:13:28 4 4 123456 2011-01-07 13:14:48 4 5 123456 2011-01-09 01:35:39 5 5
如何查询给定时间(由脚本确定)的给定时间的数据库,并找出每个票证所处的状态?
例如:要生成上面显示的图表,给定日期2011-01-02 12:00:00,多少张票证处于“ 2”状态?
我尝试查询具有特定日期和范围的数据库,但无法找出获取数据以创建图表的正确方法。在此先感谢您的帮助。
好的,如果您想在特定时间获取特定状态下的记录数,我认为可能需要存储的proc。
CREATE PROCEDURE spStatesAtDate @Date datetime, @StateId int AS BEGIN SET NOCOUNT ON; SELECT COUNT(*) as Count FROM ticket_table t1 WHERE to_state = @StateId AND status_changed_date < @Date AND status_changed_date = (SELECT MAX(status_changed_date) FROM ticket_table t2 where t2.ticket_num=t1.ticket_num AND status_changed_date < @Date) END
然后在上面的示例中调用它,您的查询看起来像
EXEC spStatesAtDate @Date='2011-01-02 12:00:00', @StateId=2