送分100分:用SQL语句直接得出两个记录之间某字段的差值。
现有如下记录:序号 表号 购电次数 剩余电量 总购电量 总用电量
1 22 1 33 2345 2312
2 22 2 23 3453 3430
3 22 3 243 3998 3755
4 22 4 36 4896 4850
4 22 5 76 5476 5400
可否通过SQL语句 根据提供的购电次数信息 直接计算出某两次购电之间的用电量,例如第4次购电和第3次购电之间 用电量为 4850-3755 =1095度。
--------------------编程问答--------------------
select sum([总用电量] * (case [购电次数]
when 3 then -1
when 4 then 1
end))
from table1
where [购电次数]=3
or [购电次数]=4
如果是 Access 将 Case 换成 IIF --------------------编程问答-------------------- SELECT distinct abs((SELECT A.总用电量 FROM TB2 as A WHERE (((A.购电次数)=3)))-(SELECT B.总用电量 FROM TB2 as B WHERE (((B.购电次数)=4)))) AS 结果
FROM TB2;
--------------------编程问答-------------------- 学习下!!!路过 --------------------编程问答--------------------
--------------------编程问答-------------------- 其实这类数据表在设计时应该加上冗余字段 [上次总用电量] 以方便统计。 --------------------编程问答-------------------- 好象要改下:
--全部数据
SELECT a.*,(a.总用电量 - b.总用电量 ) as 用电量
from tb a left join tb b
on a.购电次数=b.购电次数+1
--第4次购电:
SELECT a.*,(a.总用电量 - b.总用电量 ) as 用电量
from tb a left join tb b
on a.购电次数=b.购电次数+1
where a.购电次数=4
--全部数据
SELECT a.*,(a.总用电量 - b.总用电量 ) as 用电量
from tb a left join tb b
on a.购电次数=b.购电次数+1 and a.表号=b.表号
--第4次购电:
SELECT a.*,(a.总用电量 - b.总用电量 ) as 用电量
from tb a left join tb b
on a.购电次数=b.购电次数+1 and a.表号=b.表号
where a.购电次数=4 and a.表号=22
--------------------编程问答--------------------
select B.总用电量-A.总用电量 from--------------------编程问答--------------------
(select * from 电量表 where 购电次数=3) A,
(select * from 电量表 where 购电次数=4) B
where A.表号=B.表号
up --------------------编程问答-------------------- --------------------编程问答-------------------- 上面几位的回答应该解决楼主的问题了吧,顺便提个建议,数据库的命名还是用字母比较好
补充:VB , 网络编程