环境:VB6+ACCESS2000
目的:找出同一个表中的相同值(或不同值),并按某一个字段来分类(重点),值中包含空值例:
字段1 字段2 字段3 字段4 字段5
A a1 b1 c1 d1
A a1 b1 c2 d2
A a2 b1 空 d1
B a2 b2 c2 d2
B a1 b1 c1 d1
C a1 b1 c1 d1
C a2 b1 空 d1查询的结果:
'(假如查询A类)
A类中重复值为:a1 b1 c1 d1 和 a2 b1 空 d1
A类中不重复值为:a1 b1 c2 d2
'(假如查询B类)
B类中重复值为:a1 b1 c1 d1
B类中不重复值为:a2 b2 c2 d2
'(假如查询C类)
C类中重复值为:a1 b1 c1 d1 和 a2 b1 空 d1
C类中不重复值为:无得分者:写出正确查询语句的第一人

解决方案 »

  1.   

    可能是我的表达有问题吧。我的意思是说把重复的值或不重复的值给列出来,并按字段1来分类。以查询例子中的重复字段为例:sql=select 字段2,字段3,字段4,字段5 from 表 group by 字段2,字段3,字段4,字段5 having count(*)>0
    系统返回显示的结果是:
    a1 b1 c1 d1
    a1 b1 c2 d2
    a2 b1 空 d1  '没有having count(*)>0返回的结果不会显示
    a2 b2 c2 d2假如我要查询字段1中A值的重复字段有哪些,有个笨方法,就是
    sql2="select 字段2 from 表 group by 字段2 having count(*)>1"
    sql3="select 字段3 from 表 group by 字段3 having count(*)>1"
    sql4="select 字段4 from 表 group by 字段4 having count(*)>1"
    sql5="select 字段5 from 表 group by 字段5 having count(*)>1"
    sql="select 字段2,字段3,字段4,字段5 where 字段1='A' and 字段2 in (" & sql2 ") and 字段3 in (" & sql3 & ") 字段4 in (" & sql4 & ") and 字段5 in (" & sql5 & ")"
    它的结果就会显示
    a1 b1 c1 d1
    但不能显示成
    a1 b1 c1 d1
    a2 b1 空 d1 '因为C中它也是存在的,但是in不支持空值的返回,所以不显示现在的问题是
    能不能支持返回空值,而且用一些效率比较高的语句。
    就是我要的结果是
    a1 b1 c1 d1
    a2 b1 空 d1
    请高手指点。
      

  2.   

    没看明白,是不是这样处理一下:
    select iif(字段2 ="",null,字段2),...... where ......