首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一sql语句?解决方法

2012-09-14 
求一sql语句??一数据表格:Carid(车辆id)jydate(加油日期)jysl(加油数量)jygls(加油公里数)A2012-06-023012

求一sql语句??
一数据表格:
  Carid(车辆id) jydate(加油日期) jysl(加油数量) jygls(加油公里数)
A2012-06-02 30 1200
A 2012-06-12 35 1400
A 2012-06-22 32 1600
B2012-06-02 34 1200  
B 2012-06-24 33 1400
按照carid 加油月份 加油数量 加油公里数 平均油耗 显示:
 其中平均油耗为(月份加油数合计-按日期该月第一次加油数量)×100/加油公里数之差
比如A车六月份油耗为(35+32)*100/(1600-1200),sql语句如何实现?


[解决办法]

SQL code
--> 测试数据:[tb]IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GOCREATE TABLE [tb]([Carid] VARCHAR(1),[jydate] DATETIME,[jysl] INT,[jygls] INT)INSERT [tb]SELECT 'A','2012-06-02',30,1200 UNION ALLSELECT 'A','2012-06-12',35,1400 UNION ALLSELECT 'A','2012-06-22',32,1600 UNION ALLSELECT 'B','2012-06-02',34,1200 UNION ALLSELECT 'B','2012-06-24',33,1400GO--> 测试语句:select a.Carid,convert(varchar(7),a.[min_jydate],120) as 月份,(sum_jysl-b.jysl)*100.0/(end_jygls-begin_jygls) as 平均油耗from(    select Carid,min([jydate])as min_jydate,sum([jysl]) as sum_jysl    ,min([jygls]) as begin_jygls    ,max([jygls]) as end_jygls from tb    group by Carid,convert(varchar(7),[jydate],120)) ajoin tb as b on a.Carid=b.Carid and a.min_jydate=b.jydate/*Carid 月份      平均油耗----- ------- ---------------------------------------A     2012-06 16.750000000000B     2012-06 16.500000000000(2 行受影响)*/ 

热点排行