--------------------------------------------------------F表---
SELECT ITEM, REVISION FROM FORECAST AS F 
----------------------------------------------------------------------------------------------------------------------I表---
SELECT *
  FROM ICUS_PRC AS I
 WHERE  ITEM = F.ITEM
   AND REVISION = F.REVISION;
   AND 某某条件
--------------------------------------------------------------F表查出的数据传到I表中进行查询。所需实现内容: 
  从F表中获取的第一条数据到I表中进行查询所得所有结果有一条不符合“某某条件”则直接结束I表的查询,F表把下一条记录给I表。(注意:I表查询部分符合条件的那些记录也全部不要,所得所有数据必须全部符合条件才有结果)
·Oracleselect

解决方案 »

  1.   

    如F表中查询结果可得:
    --------------------------F表-
    ITEM            REVISION
    S001-0059-10 1
    S001-0059-11 1
    S001-0059-12 1
    -----------------------------把S001-0059-10和1的值作为“I表”的条件可得:
    SELECT *
      FROM ICUS_PRC AS I
     WHERE  ITEM = ‘S001-0059-10’
       AND REVISION = ‘1’;
    ----------------------------------------I表-
    ITEM            REVISION  AMT
    S001-0059-10 1   170.185
    S001-0059-10 1   188.5102
    S001-0059-10 1   196.3838
    S001-0059-10 1   180.4064
    S001-0059-10 1   188.5376
    S001-0059-10 1   172.4796
    S001-0059-10 1   188.5102
    S001-0059-10 1   196.3838
    S001-0059-10 1   180.4064
    S001-0059-10 1   188.5376
    ------------------------------------------
    现在加入某某条件: AMT>180因为上述“I表”中查出有2条不符合条件,“F表”就直接进入下一条S001-0059-11进行查询且第一条S001-0059-10在I表中所获得数据全都不要了。必须所查数据全部符合某某条件才能得出结果。
      

  2.   


    没有看懂你的需求,最好是增加上几条测试数据.
    如F表中查询结果可得:
    --------------------------F表-
    ITEM            REVISION
    S001-0059-10 1
    S001-0059-11 1
    S001-0059-12 1
    -----------------------------把S001-0059-10和1的值作为“I表”的条件可得:
    SELECT *
      FROM ICUS_PRC AS I
     WHERE  ITEM = ‘S001-0059-10’
       AND REVISION = ‘1’;
    ----------------------------------------I表-
    ITEM            REVISION  AMT
    S001-0059-10 1   170.185
    S001-0059-10 1   188.5102
    S001-0059-10 1   196.3838
    S001-0059-10 1   180.4064
    S001-0059-10 1   188.5376
    S001-0059-10 1   172.4796
    S001-0059-10 1   188.5102
    S001-0059-10 1   196.3838
    S001-0059-10 1   180.4064
    S001-0059-10 1   188.5376
    ------------------------------------------
    现在加入某某条件: AMT>180因为上述“I表”中查出有2条不符合条件,“F表”就直接进入下一条S001-0059-11进行查询且第一条S001-0059-10在I表中所获得数据全都不要了。必须所查数据全部符合某某条件才能得出结果。
      

  3.   

    SELECT ITEM, REVISION, AMT FROM ICUS_PRC WHERE (ITEM, REVISION) IN (
      SELECT ITEM, REVISION FROM FORECAST AS F
        WHERE NOT EXISTS(SELECT 1 FROM ICUS_PRC AS I
                         WHERE F.ITEM=I.ITEM AND F.REVISION=I.REVISION AND NOT (某某条件))
    ) ORDER BY ITEM, REVISION, AMT