次の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
サブクエリで、 'TITER.FLDEMPLOYEE = '123''の場合、' EMPLOYEE.FLDREC_NUM = TITER.FLDEMPLOYEE 'は何をしますか?私は余計かもしれないと思う。 –
EMPLOYEE.FLDREC_NUM = TITER.FLDEMPLOYEEは、メイン・テーブル(EMPLOYEE)とサブクエリ(TITERテーブル)を結合します。 TITER.FLDEMPLOYEE = '123'は、特定の従業員を引っ張って、開発中にクエリをより速く実行させることです。 –
ああ、はい、私はそれをやった。示唆:これは、単一のWhere節述部でnull入力可能な入力パラメーターとして優れています。 'TITER.FLDEMPLOYEE = Coalesce(@employeeNbr、EMPLOYEE.FLDREC_NUM) ' –