I have a query which is being used in my crystal report. This part: "AND( BIKEYC IN ('GBC13', 'GBV13', 'GBV11', 'GBC11')"

has now changed they will post these codes to a table. I have created a view which will have these codes, called globkeys. it contains 2 cols, the second one is the keys and it is called 'BFKEYC'. I need to include this table here in the query so that BIKEYC is selected, not when it is "IN" that group but when it has a match in the globkeys.

SELECT                                                                       
  ALL       T01.BIENT#, T03.ADENTN, T03.ADFNM, T03.ADLNM, T01.BIKEYC,        
            T01.BISTPD, T02.OHORDD, T02.OHORD#, T02.OHORDT, T02.OHTTN$       
  FROM      ASTDTA.DRCST1 T01,                                               
            ASTDTA.OEORH1 T02,                                               
            ASTDTA.ADRES1 T03                                                
  WHERE     BIENT# = OHENT#                                                  
    AND     BIENT# = ADENT#                                                  
    AND(    BIKEYC IN ('GBC13', 'GBV13', 'GBV11',  'GBC11')                                     
    AND     OHORDD > BISTPD                                                  
    AND     OHORDT NOT IN ('QTE', 'CQO', 'COR', 'COE', 'SAM')                
    AND     ADSFX# = '000')                                                  
  ORDER BY  T01.BIKEYC ASC, T01.BIENT# ASC             
有帮助吗?

解决方案

You can use either INNER JOIN or inline query

Method 1: REPLACE Following Statement

AND(    BIKEYC IN ('GBC13', 'GBV13', 'GBV11',  'GBC11')  

WITH

AND(    BIKEYC IN (SELECT BFKEYC FROM GlobKeys)

Method 2:

SELECT                                                                       
  ALL       T01.BIENT#, T03.ADENTN, T03.ADFNM, T03.ADLNM, T01.BIKEYC,        
            T01.BISTPD, T02.OHORDD, T02.OHORD#, T02.OHORDT, T02.OHTTN$       
  FROM      ASTDTA.DRCST1 T01,                                               
            ASTDTA.OEORH1 T02,                                               
            ASTDTA.ADRES1 T03,
            GlobKeys G                                               
  WHERE     BIENT# = OHENT#                                                  
    AND     BIENT# = ADENT#                                                  
    AND(    BIKEYC = G.BFKEYC                                     
    AND     OHORDD > BISTPD                                                  
    AND     OHORDT NOT IN ('QTE', 'CQO', 'COR', 'COE', 'SAM')                
    AND     ADSFX# = '000')                                                  
  ORDER BY  T01.BIKEYC ASC, T01.BIENT# ASC 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top