1

しばらくの間、私はこのSQLのブロックを1か月間使用してきました。

SELECT 
    F.[BRANCH] AS REGION
    , F.[ACCOUNT]
    , F.[EFFECTIVE]
    , F.[POLICY]
    , F.[DESC2]
    , F.[DESC4]
    , F.[GROSS]
    , F.[COMM]
    , F.[GST ON COMM]
    , F.[ENTRYDATE]
    , I.[TYPE] 
FROM (
    (SELECT [POLP - Detailed Debtors Import].* 
     FROM [POLP - Detailed Debtors Import]  
     WHERE [POLP - Detailed Debtors Import].[EFFECTIVE] <= DateValue("30/05/2012")  
        AND [POLP - Detailed Debtors Import].[GROSS] >= 0  
        AND [POLP - Detailed Debtors Import].[DESC4] IN ('RNWL', 'NEWB', 'EP')  
        AND [POLP - Detailed Debtors Import].[DUEYR] = 2012) AS F 
        INNER JOIN (SELECT IPM_ACCTXREF.* FROM IPM_ACCTXREF  
                        WHERE IPM_ACCTXREF.TYPE 
                            IN (SELECT [Evolve - Account Types].[Account Types] 
                                FROM [Evolve - Account Types])
                        ) AS I ON F.[ACCOUNT] = I.[ACCOUNT]
    ) 
    LEFT JOIN (SELECT  [POLP - Detailed Debtors Import].* 
                  FROM [POLP - Detailed Debtors Import]  
                  WHERE [POLP - Detailed Debtors Import].[DESC4] IN ('CS', 'CANC', 'JL')
                  ) AS S ON F.[POLICY] = S.[POLICY] 
WHERE S.[POLICY] IS NULL

次に、DateValueパラメーターを変更したいと思いました(たとえば、5から6に変更するのと同じくらい簡単です)。

問題は、「JOIN操作の構文エラー」が3回繰り返されることです。それぞれをクリックすると、クエリは結果のテーブルを表示しますが、「#Name?」が表示されます。各フィールドに入力されます。

ここで何が起こっているのかわからない...

4

2 に答える 2

0

を使用するだけでなく、必要なフィールドについて明示的にクエリを書き直す必要があります*

SELECT F.REGION,
       F.ACCOUNT,
       F.EFFECTIVE,
       F.POLICY,
       F.DESC2,
       F.DESC4,
       F.GROSS,
       F.COMM,
       F.[GST ON COMM],
       F.ENTRYDATE,
       I.[TYPE]
FROM   ( (SELECT BRANCH AS REGION,
               ACCOUNT,
               EFFECTIVE,
               POLICY,
               DESC2,
               DESC4,
               GROSS,
               COMM,
               [GST ON COMM],
               ENTRYDATE
        FROM   [POLP - Detailed Debtors Import]
        WHERE  EFFECTIVE<=Datevalue("30/05/2012")
               AND GROSS>=0
               AND DESC4 IN ('RNWL', 'NEWB', 'EP')
               AND DUEYR=2012) AS F
         INNER JOIN (SELECT [TYPE],
                            ACCOUNT
                     FROM   IPM_ACCTXREF
                     WHERE  [TYPE] IN (SELECT [Account Types]
                                       FROM   [Evolve - Account Types])) AS I
           ON F.ACCOUNT=I.ACCOUNT )
       LEFT JOIN (SELECT POLICY
                  FROM   [POLP - Detailed Debtors Import]
                  WHERE  DESC4 IN ('CS', 'CANC', 'JL')) AS S
         ON F.POLICY=S.POLICY
WHERE  S.POLICY IS NULL 

からのデータは実際にはメインステートメントで使用されLEFT JOINていないため、ここでの目的には少し迷っています。SSELECT

この名前もTYPEフィールド名として使用しており、これは予約語です。

于 2012-10-17T06:24:18.407 に答える
0

クエリをサブクエリに分割する(厄介なネストされたSELECTステートメントをすべて通過する)と、問題が修正されました。しかし、そもそも原因が何であったかはわかりません(以前は機能していました)。

于 2012-10-22T23:52:20.377 に答える