数据如下:
日  期      单据号    库存位置 
2003/07/12    B00001    A10000
2003/07/12    B00001    A10000
2003/07/12    B00001    A10000
2003/07/12    B00001    Q10000  *
2003/07/12    B00001    A10000
2003/07/13    C00001    B20000
2003/07/13    C00001    B20000
2003/07/13    C00001    B20000
单据号中的一组数据有n个,而其所对应的库存位置也同样的n个,注意,一组相同单据号其对应的库存位置也是相同的。怎么写才能查出这些数据中“库存位置”出错的单据号?如上*号部分即为出错的库存位置。

解决方案 »

  1.   

    select * from table
    where 单据号='B00001'
    and not ( 库存位置 ='Q10000')
      

  2.   

    不太明白你的意思,我觉得只要比较COUNT(单据号)的个数是否等于COUNT(库存位置)就行了,如果不等,肯定就出错。
      

  3.   

    我说楼主,按你的想法,从你的上面的记录来看吧,
    你说Q10000库存位置是错的,
    计算机有可能认为你的A10000位置是错的呢!!!
    没有一个标准,怎么判断你哪个是对的呀??????
    -----------------------------------------------
    这跟谁是不是错误,并无多大关系,你只需找出存在这种问题的数据就行了。我认为这个问题一点也不矛盾嘛!!!大家怎么会误解呢?如果一个B00001单据对应的都是A10000,则绝对没问题,就算B00001只有两笔,其中一笔是A10000库存,另一笔是Q10000,那么它肯定也是有问题的,我只要查出这种错误就行了,并不用计算机判断哪条是错,哪条是对!
      

  4.   

    select a.djh from 
    (select count(a.djh) as djh from A a 
    where a.djh='') a,
    (select count(b.kcwz) as kcwz  from A b
    where b.djh='') b
    where a.djh>b.kcwz
    这是根据你输入的单据号来判断它的对应的位置是否正确!!!
      

  5.   

    select 单据号,库存位置 From Table1 group by 单据号,库存位置 having count(单据号)<>count(库存位置)
    我用上述语句查过,可以执行,没找出数据。
      

  6.   

    select a.kcwz,a.djh from 
    (select a.djh,count(kcwz) as kcwz from A a
    group by a.djh) a,
    (select a.djh,count(a.djh) as djhcount from A a 
    group by a.djh) b
    where a.kcwz>b.djhcount and a.djh=b.djh
      

  7.   

    Query1.close;
    Query1.sql.clear;
    Query1.sql.text:='select 单据号,count(库存位置) as 库存位置数量 from 表
                     group by 单据号
                     having 库存位置数量>1';
    Query1.open;
    if Query1.recordcount>0 then
      数据有问题;
    ////////////////////////
    刚写的,你试一下。
      

  8.   

    谢谢dulei115() ,但明显不对。你这样查,好像是统计的每种单据号的库存位置数量,而非我想要的库存个数。
      

  9.   

    hehe!不好意思,问题解决了,散分!!!
    谢谢ziqing(紫情)