2016-12-16 18 views
0

次のSQLでは、「間違った構文が近くにあります= '問題がSELECT文(別名TITER)であるようです」というエラーが表示されます。 SQLはエラーなしで実行されますが、FULL OUTER JOINを追加してもエラーは発生しません; CROSS APPLYセクションのSELECTステートメントにTITER.FLDDATE = TITER.FLDDATEと入力した後でなければなりません。エラーおよび必要に応じて構文を修正し'='の近くの構文が正しくありません

SELECT 
    EMPLOYEE.FLDLNAME, 
    EMPLOYEE.FLDFNAME, 
    EMPLOYEE.FLDREC_NUM, 
    EMPLOYEE.FLDID2, 
    TUBER_FLDDATE as "TUBER Date", 
    TUBER_FLDCLASS as "TUBER Result", 
    TITER.FLDDATE as "Titer Date" 
FROM EMPLOYEE 
CROSS APPLY 
    (SELECT TUBER_FLDDATE = TUBER.FLDDATE, 
      TUBER_FLDCLASS = TUBER.FLDCLASS, 
      TITER.FLDDATE = TITER.FLDDATE 
     FROM (SELECT rn = row_number() over(order by TUBER.FLDDATE), 
       TUBER.FLDDATE, TUBER.FLDCLASS 
      FROM TUBER 
      WHERE EMPLOYEE.FLDREC_NUM = TUBER.FLDEMPLOYEE 
       and TUBER.FLDEMPLOYEE = '123') TUBER 
     FULL OUTER JOIN 
      (Select rn = row_number() over(order by TITER.FLDDATE), 
        TITER.FLDDATE 
      FROM TITER 
      WHERE TITER.FLDTYPE = 'BAMT' 
       AND EMPLOYEE.FLDREC_NUM = TITER.FLDEMPLOYEE 
       and TITER.FLDEMPLOYEE = '123') TITER 
      ON TITER.rn = TUBER.rn) tests 
+0

サブクエリで、 'TITER.FLDEMPLOYEE = '123''の場合、' EMPLOYEE.FLDREC_NUM = TITER.FLDEMPLOYEE 'は何をしますか?私は余計かもしれないと思う。 –

+0

EMPLOYEE.FLDREC_NUM = TITER.FLDEMPLOYEEは、メイン・テーブル(EMPLOYEE)とサブクエリ(TITERテーブル)を結合します。 TITER.FLDEMPLOYEE = '123'は、特定の従業員を引っ張って、開発中にクエリをより速く実行させることです。 –

+0

ああ、はい、私はそれをやった。示唆:これは、単一のWhere節述部でnull入力可能な入力パラメーターとして優れています。 'TITER.FLDEMPLOYEE = Coalesce(@employeeNbr、EMPLOYEE.FLDREC_NUM) ' –

答えて

2

私はあなたの代わりにアンダースコアの偶発期間があると思う:。

TITER.FLDDATE = TITER.FLDDATETITER_FLDDATE = TITER.FLDDATE

である必要があります。

+0

よくできました。いい目! – xQbert

+0

良いキャッチ!私はそれを実行する変更を行いました。クロス・アプライ・セクションに別の完全外部結合を追加する必要があり、次のエラーが表示されます。「マルチパート識別子TITER.FLDDATE」をバインドできませんでした。しかし、これは本当に別の問題であるため、私はこのエラーメッセージと対処方法を探求します。 –

関連する問題