日期:2014-05-17  浏览次数:20733 次

MFC下SQL Server查询分析数据分析(求助!!!急)
最近有一个项目苦恼ING,求各位大牛们帮帮忙,谢谢啦!:
  现在SQL Server数据库里有所有车一天的数据(可能有几百万条),每个车的平均上传数据时间并不是精准的每30秒(也有可能10秒 、12秒等上传一次,也可能大于30秒)。也就是说所有车30秒左右传一次车的状态变化情况,假如00:00:12和00:00:27时刻分别传一条数据,以小于30秒的最后一条记录为准。

有如下要求:
根据输入的日期如:‘2012-11-28’在程序中实现如下效果(要一天24小时的,差不多有2880条):
   时间      满载车辆数     空载车辆数
0:00:00  500        600
0:00:30  530        570
0:01:00  580        520
0:01:30  600        500

数据库数据如下(同时有很多车上传数据,每台车都有一天24小时的数据,0为空车,1为满):
T_CarID          T_dateTime                     T_Status
   1      2012-11-28 00:00:12.000             0
   1      2012-11-28 00:00:27.000             0
   1      2012-11-28 00:00:37.000             0
   1      2012-11-28 00:01:02.000             0
   1      2012-11-28 00:01:27.000             0
   1      2012-11-28 00:01:52.000             1
   1      2012-11-28 00:02:17.000             1

现在遇到的问题就是假如我输入2012-11-28,怎么将数据分析出来,如00:00:00-00:00:30内的所有车的状态显示如上

------解决方案--------------------

----------------------------
-- Author  :TravyLee(物是人非事事休,欲语泪先流!)
-- Date    :2012-12-27 14:26:45
-- Version:
--      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
-- Jul  9 2008 14:43:34 
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[test]
if object_id('[test]') is not null 
drop table [test]
go 
create table [test]
(
[T_CarID] int,
[T_dateTime] datetime,
[T_Status] int
)
insert [test]
select 1,'2012-11-28 00:00:12.000',0 union all
select 1,'2012-11-28 00:00:27.000',0 union all
select 1,'2012-11-28 00:00:30.000',0 union all
select 1,'2012-11-28 00:01:02.000',0 union all
select 1,'2012-11-28 00:01:27.000',0 union all
select 1,'2012-11-28 00:01:52.000',1 union all
select 1,'2012-11-28 00:02:17.000',1
go

with T(a)
as(
select 1 union all
select 1 union all
select 1
),m
as(
select a.a