表abc内容:
aa           bb                  cc
----------   ------------        -----------
111          字afdas
202          字bfda
231          字cdfas表cde中内容:
ll            qq                  eee
----------    -----------         ---------
100           200                  001
200           250                  002表abc和cde中还有很多很多数据...
关系是如果表abc中的aa值在100到200之间则cc的值为:001如果表abc中的aa值在200到250之间.则abc中的cc值为002
.....请帮小弟写一下这个句子.先谢各位了.

解决方案 »

  1.   

    select  aa,bb,case when aa >=100 and aa<=200 then 001
                           when aa >=100 and aa<=200 then 001 
                           when .....
                      end    as cc from abc
      

  2.   

    SELECT aa, bb,
              (SELECT TOP 1 eee
             FROM cde
             WHERE ll < aa AND qq > aa) AS cc
    FROM abc
    我经过测试的,绝对行,够简单吧,不过好像分少了点
      

  3.   

    问题没有说清楚,其实下面的语句肯定能实现你的目的。select  aa,bb,case when aa >=100 and aa<=200 then 001
                           when aa >=200 and aa<=250 then 002 
                           when .....
                      end    as cc from abc
    你现在想要的就是条件是多个 的,你不可能把所有的都列出来
    你也是使用循环啊,把CDE表的记录取出来,排序一下,
    然后把 WHEN 后面的值用参数来实现,对 CDE表中的数据集进行
    循环,不就是你要的结果吗?
    query1.sql.add('select * from cde ');
    query1.open;
    query1.first;
    while not query1.eof do
    begin
      query2.sql.add(' select  aa,bb,case when aa >=:pll 
      query2.sql.add('and  aa<=:pqq   ');
      query2.sql.add('then (select eee from cde where ll=:ll and qq=:qq)');
      query2.sql.add('end    as cc from abc');
      query2.parambyname('pll').Asstring:=query1.fieldbyname('ll').AString;
      query2.parambyname('pqq').Asstring:=query1.fieldbyname('qq').AString;
      query2.parambyname('ll').Asstring:=query1.fieldbyname('ll').AString;
      query2.parambyname('qq').Asstring:=query1.fieldbyname('qq').AString;
      把query2的记录插入到临时表中 再循环,最后我们对临时进行操作。
      query1.next;
    end;
                 
      

  4.   

    上面这句是to:yzf111(一台电脑,一包烟,一个火机) 
      

  5.   

    那要说清楚吗
    UPDATE abc
    SET cc =(SELECT TOP 1 eee
             FROM cde
             WHERE ll < aa AND qq > aa)