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 一下目标表.