2016-12-16 67 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“无法绑定”。但是,因为这是一个真正的不同的问题,我将探讨这个错误信息以及如何补救。 –