能给出tab1与tab2的示例数据号码?

解决方案 »

  1.   

    能给出tab1与tab2的示例数据码及所希望的结果吗?
      

  2.   

    tab1
    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
     :             :
     :             :
     :             :
      

  3.   

    按你的说法,结果应该是
    a =14-12=2,不应该是10啊
    b =14-12=2,不应该是20
    c=0,
    是不是这样?
    还有你的sql是不是mysql?
      

  4.   

    忘了说了,我用的是MS SQL SERVER 平台并不一定非得是单纯SQL语句,也可以是存储过程等其他方式,只要速度快,甚至你要是认为表结构不合理,也可以提出修改建议!
      

  5.   

    to:dejoy(燕青)
    对不起啊,结果我是任意写的,查询结果就是要你说的那种!!
      

  6.   

    chx007(乱发吹风),OK,我现在要回去吃饭,晚上我再回复你.
      

  7.   

    最简单的办法,
    建一个TEMP表,
    将MAX值写入,
    再查询出MIN值,
    做相减处理
      

  8.   

    经过一小时的试验,终于出来了,如下:
    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
      

  9.   

    改一下
    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