2016-12-16 74 views
0

下面的SQL生成錯誤「不正確的語法附近‘=’這個問題似乎是與select語句(化名效價)。我已經換出滴度Select語句與其他表, 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子句謂詞:'和TITER.FLDEMPLOYEE =合併(@employeeNbr,EMPLOYEE.FLDREC_NUM)'做得好 –

回答

2

我認爲你有一個偶然的時期,而不是下劃線:

TITER.FLDDATE = TITER.FLDDATETITER_FLDDATE = TITER.FLDDATE

,然後將它成功地解析。

+0

。好眼睛! – xQbert

+0

好抓!我做了改變它運行。我需要在交叉應用部分添加另一個完整的外部聯接,並且出現以下錯誤:「多部分標識符」TITER.FLDDATE「無法綁定」。但是,因爲這是一個真正的不同的問題,我將探討這個錯誤信息以及如何補救。 –