日期:2014-05-19  浏览次数:21048 次

C#winform 数据库操作,高分求教!!
兄弟们,想从一个表里提取一些字段,做点处理,生成一个新报表。可惜本人数据库操作语言不熟,遇到一点问题,大家帮帮忙啊!
具体情况是这样的:
原始表:dailyRunInfo   日运行记录表
字段:
CarID varchar 20 0             汽车编号(每)
TJYear int 4 1             统计年份
TJMonth int 4 1             统计月份
    TJDate     datetime   8                           日期
RepairFlag varchar 5             是否维修
RepairContent varchar 50           维修内容
RunToday int 4             当日运行公里数
RunTotal int 4             累计运行公里数
DXNum int 4 1             大修次数(第几次大修)
DXDate datetime 8             上次大修日期
DXDistance int 4             自上次大修累计运行公里
XXNum int 4 1             小修次数(第几次小修)
XXDate datetime 8             上次小修日期
  XXDistance int 4             自上次小修累计运行公里
这个表主要存储不同ID的汽车每天的运行记录
现在我想在每月末生成一个月报表,统计不同汽车在该月的运行总记录(一辆汽车只对应一条),主要统计字段如下:

汽车编号     统计年月     当月运行公里数     累计运行公里数       本月最后一次大修日期       自最后一次大修累计运行公里     本月最后一次小修日期     自最后一次小修累计运行公里

上述字段都能从   dailyRunInfo   表里统计出来,但想通过一次查询(输入年月)输出所有字段信息可能涉及到很多数据库的综合操作,小弟实在是想不出来,还得请各位大虾帮忙啊,

重分报答!!

------解决方案--------------------
select count(字段),...from dailyRunInfo where CarID in (select distint CarID from dailyRunInfo) and 时间 <=.. and 时间> =..
------解决方案--------------------
1、按一个月的时间把记录从日报表里取出来
2、在程序中把数据进行统计,插入月表
------解决方案--------------------
select sum(RunToday),CarID from dailyRunInfo where TJMonth = ?? group by CarID
------解决方案--------------------
可以用下临时表
------解决方案--------------------
建立临时表,使用存储过程完成
------解决方案--------------------
最后一次大修日期(你得给个日期,@本月最后一天,算法很简单,下月第一天 -1 )
max(大修日期) from *** where 大修日期 < @本月最后一天
------解决方案--------------------
分批来,这样最简单.
看重结果,能实就好.
------解决方案--------------------
可以使用 MIS 常用的方法, 建一个最终要统计生产的目标固定表,

然后在程序运行中, 每增加一条记录,将结果累加到 目标表, 比如使用触发器.

最后要结果的时候只要 Select 一下目标表.