0
Initially, I am getting an error " Column qualifier or table OEINDLID undefined. "

我在这里所做的是获取由 Crystal Report 创建的 SQL 并尝试从中查看...

     CREATE VIEW astccdta.acsusage                                       
AS                                                                  
SELECT ICPRTMIA.IARCC9, OEINDLID.IDDOCD, OEINDLID.IDCOM#,           
ADRESSAD.ADSFX#, OEINDLID.IDPRT#, OEINDLID.IDGRC#, OEINDLID.IDENT#, 
OEINDLID.IDSFX#, OEINDLID.IDPRLC, OEINDLID.IDNTU$, OEINDLID.IDSHP#, 
ADRESSAD.ADFNM, ADRESSAD.ADLNM, OEINHDIH.IHVIAC, ADRESSAD.ADSTTC,   
OEINDLID.IDINV#, (                                                  
SELECT                                                              
    SUM (T01.IDNTU$)                                                
FROM                                                                
    ASTDTA.OEINDLID T01                                             
WHERE                                                               
    T01.IDCOM# = '001' AND                                          
    T01.IDDOCD = OEINDLID.IDDOCD AND                                
    T01.IDINV# = OEINDLID.IDINV# AND                                
    T01.IDPRLC LIKE 'F%'                                            

)
 FROM   (ASTDTA.OEINDLID                                      
INNER JOIN ASTDTA.ICPRTMIA ON OEINDLID.IDPRT#=ICPRTMIA.IAPRT#)
INNER JOIN (ASTDTA.ADRESSAD                                   
INNER JOIN ASTTRN.OEINHDIH ON ADRESSAD.ADENT#=OEINHDIH.IHENT#)
ON OEINDLID.IDIDC#=OEINHDIH.IHIDC#                            
 WHERE  ICPRTMIA.IARCC9='ACS'                                 
OEINDLID.IDCOM#='001'                                         
AND OEINDLID.IDPRT# LIKE 'ACS%'           
4

2 回答 2

1

有一堆语法错误,但试试这个

CREATE or REPLACE VIEW astccdta.acsusage  AS                                     
  SELECT M.IARCC9
       , D.IDDOCD, D.IDCOM#           
       , A.ADSFX#
       , D.IDPRT#, D.IDGRC#, D.IDENT# 
       , D.IDSFX#, D.IDPRLC, D.IDNTU$, D.IDSHP# 
       , A.ADFNM, A.ADLNM
       , H.IHVIAC
       , A.ADSTTC   
       , OEINDLID.IDINV#
       ,(SELECT SUM (T.IDNTU$)                                                
           FROM ASTDTA.OEINDLID AS T                                             
           WHERE T.IDCOM# = '001'                                           
             AND T.IDDOCD = D.IDDOCD
             AND T.IDINV# = D.IDINV#                                 
             AND T.IDPRLC LIKE 'F%'                                            
        )
    FROM ASTDTA.OEINDLID AS D                                     
    JOIN ASTDTA.ICPRTMIA AS M   ON D.IDPRT# = M.IAPRT#
    JOIN ASTTRN.OEINHDIH AS H   ON D.IDIDC# = H.IHIDC#
    JOIN ASTDTA.ADRESSAD AS A   ON A.ADENT# = H.IHENT#
    WHERE  M.IARCC9 = 'ACS'                                 
      AND  D.IDCOM# = '001'                                         
      AND  D.IDPRT# LIKE 'ACS%'           

请注意,我去掉了连接上的括号。让优化器完成它的工作。

于 2013-09-30T01:56:33.477 回答
1

您可以在此处看到 Crystal 如何创建 T01 相关名称:

SELECT                                                              
    SUM (T01.IDNTU$)                                                
FROM                                                                
    ASTDTA.OEINDLID T01                           

您在下面添加的代码不使用相关名称:

 FROM   (ASTDTA.OEINDLID                                      
INNER JOIN ASTDTA.ICPRTMIA ON OEINDLID.IDPRT#=ICPRTMIA.IAPRT#)

它有 OEINDLID.IDPRT#。添加一个相关名称,如 T01,并在您引用 OEINDLID.some_column_name 的所有位置使用它而不是 OEINDLID,看看是否有帮助。

于 2013-09-18T18:23:20.693 回答