一月  二月  用户地址
50    40    中国
10    30    德国
20    10    美国
80    50    中国
30    40    美国
50    20    德国
现在要求选出同一个用户地址一月比二月增加至少30的记录。
例中国(50+80)-(40+50)=40>30
  美国(20+30)-(10+40)=0<30
  德国(10+50)-(30+20)=10<30
  str1:=?  //?这里的sql语句应怎样写
  adoquery1.close;
  adoquery1.sql.clear;
  adoquery1.sql.add(str1);
  adoquery1.open
得到以下结果
一月  二月  用户地址
50    40    中国
80    50    中国  

解决方案 »

  1.   

    select * from tableName  where 用户地址 in
    (select  用户地址 from tableName  group by (用户地址) having(sum(一月)-sum(二月)))
      

  2.   

    你试试,不知道这样可不可以?用组合来查。
    select table.一月,table.二月,table.用户地址 from table,(select sum(一月-二月) as 计数,用户地址 from table where 计数>30 order by 用户地址) aa where 用户地址=aa.用户地址
      

  3.   

    另如果我想知道符合条件的组有多少个sql语句该怎样写啊?
    这里只有中国一个组符合条件.
      

  4.   


    select Field1,用户地址 from 
      (select Sum(一月)-Sum(二月) as Field1,用户地址 group by 用户地址) where Field1>30
      

  5.   

    --求符合条件的组的个数
    --我借用N-P的语句
    select count(*) from tableName  where 用户地址 in
    (select  用户地址 from tableName  group by (用户地址) having(sum(一月)-sum(二月))) group by 用户地址
      

  6.   

    select count(Field1) from 
      (select Sum(一月)-Sum(二月) as Field1 from tablename group by 用户地址) where Field1>300
    3x结贴