按你的说法,结果应该是 a =14-12=2,不应该是10啊 b =14-12=2,不应该是20 c=0, 是不是这样? 还有你的sql是不是mysql?
忘了说了,我用的是MS SQL SERVER 平台并不一定非得是单纯SQL语句,也可以是存储过程等其他方式,只要速度快,甚至你要是认为表结构不合理,也可以提出修改建议!
to:dejoy(燕青) 对不起啊,结果我是任意写的,查询结果就是要你说的那种!!
chx007(乱发吹风),OK,我现在要回去吃饭,晚上我再回复你.
最简单的办法, 建一个TEMP表, 将MAX值写入, 再查询出MIN值, 做相减处理
经过一小时的试验,终于出来了,如下: select tb1.name,if((min(tb2.time)<>'2002-08-01') or (max(tb2.time)<>'2002-08-03') ,0,max(tb2.value)-min(tb2.value) ) from tb1,tb2 where tb1.id=tb2.id and tb2.time between '2002-08-01' and '2002-08-03' group by tb2.id
改一下 select tb1.name,if((min(tb2.time)<>'2002-08-01') or (max(tb2.time)<>'2002-08-03') ,0,max(tb2.value)-min(tb2.value) ) as '差值' from tb1,tb2 where tb1.id=tb2.id and tb2.time between '2002-08-01' and '2002-08-03' group by tb2.id
id name
'0000001' 'a'
'0000002' 'b'
'0000003' 'c'
'0000004' 'd'tab2
id time value
'0000001' '2002-8-1' 12
'0000001' '2002-8-2' 13
'0000001' '2002-8-3' 14
: : :
: : :
'0000002' '2002-8-1' 12
'0000002' '2002-8-2' 13
'0000002' '2002-8-3' 14
: : :
: : :
'0000003' '2002-8-1' 12
'0000003' '2002-8-2' 13
'0000004' '2002-8-3' 14
: : :
: : :
结果:
'a' 10
'b' 20
: :
: :
: :
a =14-12=2,不应该是10啊
b =14-12=2,不应该是20
c=0,
是不是这样?
还有你的sql是不是mysql?
对不起啊,结果我是任意写的,查询结果就是要你说的那种!!
建一个TEMP表,
将MAX值写入,
再查询出MIN值,
做相减处理
select tb1.name,if((min(tb2.time)<>'2002-08-01') or (max(tb2.time)<>'2002-08-03') ,0,max(tb2.value)-min(tb2.value) )
from tb1,tb2
where tb1.id=tb2.id and
tb2.time between '2002-08-01'
and '2002-08-03'
group by tb2.id
select tb1.name,if((min(tb2.time)<>'2002-08-01') or (max(tb2.time)<>'2002-08-03') ,0,max(tb2.value)-min(tb2.value) ) as '差值'
from tb1,tb2
where tb1.id=tb2.id and
tb2.time between '2002-08-01'
and '2002-08-03'
group by tb2.id