select 单据编号,材料编号,应发数量,实发数量,清算单价,清算金额,......
  from 材料调拨明细,材料调拨单
  where 收料单位=ReceiveDepartment 
         and (    (材料编号=0101001 and 应发数量>1000)
                or (材料编号0101002 and 清算金额>90000)
                or (...)
              )

解决方案 »

  1.   

    select * from 材料调拨单 
    where 收料单位='ReceiveDepartment' and 单据编号 in (select 单据编号 from 材料调拨明细 where 材料编号 = '0101001' and 应发数量 > 1000 and ...)这绝对没错,又简单。第一位任兄说的也对,不过我认为不必要建临时表。
      

  2.   

    我觉得你原来的方法就已经很好了
    我以前就用过,并且和一句语句进行过比较其他人的方法要用变量来生成一句sql语句,在纪录量大的情况下并不合算
    我想你可以改善的地方是你这个程序的功能设计,可以更合理些
    比如 不同的单据编号之间用and,明显是不可能的,不必要的....
    我推荐一种简洁合理的方法:
    综合查询中只有一个单据号(或范围),然后不同的材料,数量等关系可以用逻辑关系
    (单据号不输入,则范围扩大到所有单据编号)查询完一个单据编号范围之后,可以再查第二个单据编号范围,其间结果集不清空而是追加
    但是用户拥有一“清空”键,可以随时清空结果集
    这样用户可以方便明了地操作,你的查询显示感觉和界面显示感觉也会得到很大提高。
    祝顺利!