2017-12-20 18 views
0

サードパーティのデータベースがあります。連絡先情報は、多くのテーブル、contact1、contact2、contsuppに含まれています。内部結合、左外部結合を使用して、Where句に構文エラーを適用します。クエリは、左外部結合なしで機能します。しかし、私は正しい電子メールを選択する必要があります。この場合where句はどこに置かれますか?内部結合の使用、左外部結合、クロス適用適用構文:where句

  SELECT 'P', 
      'NA' PEOPLE_ID, 
      'NA' PEOPLE_CODE_ID, 
      T.ForeName, 
      T.Middle_Name, 
      T.Surname, 
      'PERM', 
      'N', 
      GetDate(), 
      GetDate(), 
      'SCTBRDG', 
      '0001', 
      GetDate(), 
      GetDate(), 
      'SCTBRDG', 
      '0001', 
      '*', 
      C2.UBIRTHDATE, 
      C2.Ubrthcnty, 
      CASE WHEN LEFT([URELEASE], 6) IN ('Employer', 'EMPLYR') THEN 'EMPLYR' ---was URELEASE 
      WHEN LEFT([URELEASE], 6) IN ('Family', 'Sister', 'OFAM') THEN 'OFAM' 
      WHEN LEFT([URELEASE], 6) = 'FATHER' THEN 'FATHER' 
      WHEN LEFT([URELEASE], 6) IN ('Friend', 'OTHER') THEN 'OTHER' 
      WHEN LEFT([URELEASE], 6) IN ('Guardian', 'GUARDN') THEN 'GUARDN' 
      WHEN LEFT([URELEASE], 6) = 'MOTHER' THEN 'MOTHER' 
      WHEN LEFT([URELEASE], 6) IN ('PARENT', 'Parents') THEN 'PARENT' 
      WHEN LEFT([URELEASE], 6) = 'RESTR' THEN 'RESTR' 
      WHEN LEFT([URELEASE], 6) = 'Spouse' THEN 'Spouse' 
      WHEN LEFT([URELEASE], 6) IS NULL THEN 'NROF' 
      ELSE 'NONE' END AS ReleaseInfo, 
      C2.Ugender, 
      C2.Umarstat, 
      C2.Udenominat, 
      C2.Uveteran, 
      C2.Ucntrycitz, 
      C2.Uvisatype, 
      i.ACCOUNTNO, 
      i.ADDRESS1, 
      i.ADDRESS2, 
      i.ADDRESS3, 
      i.CITY, 
      i.STATE, 
      i.ZIP, 
      i.PHONE3, 
      i.FAX, 
      C2.UCOUNTY, 
      ISNULL(C2.UEMAILSCT, replace(lower(T.ForeName) + '.' + lower(T.Surname) + '@okwstudents.edu', ' ', '')), 
      cs.CONTSUPREF as EMAIL,     --Personal Email 
      C2.UADDRTYPE, 
      i.KEY2, 
      i.KEY5, 
      i.KEY3, 
      C2.UCURRICULM, 
      C2.UMAJOR, 
      i.DEPARTMENT, 
      C2.UCOLLCMPLT, 
      C2.UFULLPART, 
      C2.UCOHORT, 
      C2.UAPPLICDT, 
      C2.USTUSTATDT, 
      C2.UDECISCODE, 
      C2.UDECISDATE, 
      C2.USTRTTRMDT, 
      C2.UCOHRTSTDT, 
      C2.UADMCOUNCD, 
      C2.UADVISMNTR, 
      i.Phone1, 
      i.Phone2, 
      Uethnicbg, 
      i.COUNTRY, 
      C2.USOCSECNUM GOVERNMENT_ID, 
      i.KEY1, 
      C2.Urelease RELEASE_INFO, 
      C2.USOCSECNUM TAX_ID, --- 
      C2.USOCSECNUM, --- 
      GETDATE() 
      FROM 
      --inserted i ---test inserted, 
      GoldMine_test.dbo.CONTACT1 i 
      Inner Join CONTACT2 C2 on (i.ACCOUNTNO = C2.ACCOUNTNO) 
      CROSS APPLY dbo.NameParser(i.Contact) T 
      --inner join GoldMine_test.dbo.CONTACT2 c2 on (i.ACCOUNTNO = c2.ACCOUNTNO) 
      LEFT outer join GoldMine_test.dbo.CONTSUPP cs on ( (cs.ACCOUNTNO = i.ACCOUNTNO) 
      AND (cs.RECTYPE='P') 
      AND (cs.U_CONTACT = 'E-MAIL ADDRESS') 
      WHERE i.Key1 = '31-ATE' --Incorrect syntax near the keyword 'WHERE' 
      OR (i.Key1 = '50-DEP') 
      OR (i.Key1 = '51-RET') 
+4

を動作するか確認してくださいGoldMine_test.dbo.CONTSUPPへの結合述部の余分な括弧。私はノイズと余分なキーストローク以外何も提供しないので、それらのカッコをすべて削除するだけです。 –

+0

本当に必要な場合を除いて、かっこは使用しないでください。間違いをするのは本当に簡単です。 –

答えて

1

おそらく、構文エラーは、このコード行である:

LEFT outer join GoldMine_test.dbo.CONTSUPP cs on ( (cs.ACCOUNTNO = i.ACCOUNTNO) 

はこのものと交換してください:

LEFT outer join GoldMine_test.dbo.CONTSUPP cs on (cs.ACCOUNTNO = i.ACCOUNTNO) 

そして、それはあなたが持っている

関連する問題