2016-04-01 19 views
-1

助けてください!複数のサブクエリ結合でSQL構文エラーが発生しました

クエリの一部で構文エラーが発生しましたが、何が間違っているのかわかりません。 Intellisenseは私が使用しているデータベースでは動作しません。サブクエリを角カッコで囲みようとしましたが、これでも構文エラーが発生します。誰でも問題を見つけられますか?私はそれがブラケットか何かがないと仮定しますが、私はサブクエリの構文について何も見つけることができませんでした。

私がしようとしているのは、既存のMS Accessレポートを、データを生成するために相互に埋め込まれた膨大な量のクエリのために非常に困難であることが判明しているSQLに変換することです。 'qry'が付いているものは、Accessのものへの参照です。この照会は、出入り口の出入りを追跡するために使用されるデータベースに対して行われ、出席報告に使用されます。残念ながら、社内システムではないため、データベーススキーマへのアクセス権がないため、自分でクエリを作成するのは難しいです。私は完全なものを投稿することができますが、文脈がなければそれほど意味がないかもしれませんか?今のところ私はクエリの一部を投稿します。私は取得しています

エラー:以下のSQLクエリの

>Msg 156, Level 15, State 1, Line 21 
>Incorrect syntax near the keyword 'RIGHT'. 
>Msg 156, Level 15, State 1, Line 27 
>Incorrect syntax near the keyword 'RIGHT'. 
>Msg 156, Level 15, State 1, Line 34 
>Incorrect syntax near the keyword 'ON'. 

パート。 21行目は、最初の 'RIGHT JOIN'がどこにあるかに注意してください。

INNER JOIN (
    SELECT vw_ReportQuery.UserID 
     ,vw_ReportQuery.[6000UserName] 
     ,vw_ReportQuery.[6007EventTime] 
     ,CAST([6007EventTime] AS DATETIME) AS SDate 
     ,DatePart(HOUR, [6007EventTIme]) AS hoursBetween 
     ,vw_ReportQuery.[6002DoorName] 
    FROM vw_ReportQuery 
    WHERE (
      ((vw_ReportQuery.[6000UserName]) = 'Smith, Jon') 
      AND (
       (vw_ReportQuery.[6007EventTime]) >= '1/1/2016 00:00:00' 
       AND (vw_ReportQuery.[6007EventTime]) <= '1/30/2016 00:00:00' 
       ) 
      AND (
       (DatePart(Hour, [6007EventTIme])) BETWEEN 12 
        AND 14 
       ) 
      AND (
       (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd floor Rear Goods Door (out)' 
       OR (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd flr Staff Entrance (out)' 
       OR (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd flr Sub-let entrance (out)' 
       OR (
        (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd floor Rear Goods Door (in)' 
        OR (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd flr Staff Entrance (in)' 
        OR (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd flr Sub-let entrance (in)' 
        ) 
       ) 
      ) 
    ) AS qryTestSelectedLunchPeriodHas_1 ON qryTestSelectedLunchPeriodHas.SDate = qryTestSelectedLunchPeriodHas_1.SDate 
GROUP BY qryTestSelectedLunchPeriodHas.UserID 
    ,qryTestSelectedLunchPeriodHas.[6000UserName] 
    ,qryTestSelectedLunchPeriodHas.SDate) -- as qryTestLunchPeriodHasFinal 
RIGHT JOIN (
    SELECT vw_ReportQuery.UserID 
     ,vw_ReportQuery.[6000UserName] 
     ,vw_ReportQuery.[6007EventTime] 
     ,Cast([6007EventTime] AS DATETIME) AS SDate 
    FROM vw_ReportQuery 
    WHERE (
      ((vw_ReportQuery.[6000UserName]) = 'Smith, Jon') 
      AND (
       (vw_ReportQuery.[6007EventTime]) >= '1/1/2016 00:00:00' 
       AND (vw_ReportQuery.[6007EventTime]) <= '1/30/2016 00:00:00' 
       ) 
      ) 
    RIGHT JOIN (
     SELECT vw_ReportQuery.UserID 
      ,vw_ReportQuery.[6000UserName] 
      ,vw_ReportQuery.[6007EventTime] 
      ,Cast([6007EventTime] AS DATETIME) AS SDate 
     FROM vw_ReportQuery 
     WHERE (
       ((vw_ReportQuery.[6000UserName]) = 'Smith, Jon') 
       AND (
        (vw_ReportQuery.[6007EventTime]) >= '1/1/2016 00:00:00' 
        AND (vw_ReportQuery.[6007EventTime]) <= '1/30/2016 00:00:00' 
        ) 
       ) 
     ) ON qrySelectedDatesAndUser.SDate = qrySelectedDatesAndUser_1.SDate 
    ) ON qryTestLunchPeriodHasFinal.SDate = qrySelectedDatesAndUser.SDate 
GROUP BY qrySelectedDatesAndUser.[6000UserName] 
    ,qrySelectedDatesAndUser_1.SDate 
    ,qryTestLunchPeriodHasFinal.First 
    ,qryTestLunchPeriodHasFinal.Last 
    ,qryTestLunchPeriodHasFinal.LunchPeriod 
+0

を行うことができますか? – jarlh

+0

私はどこに行くのか分かりません。それはそれぞれの「ON」の後か他のどこかですか? –

答えて

1

-- as qryTestLunchPeriodHasFinalというサブクエリエイリアスがあります。また、他のサブクエリもエイリアスを必要とします。私はそれがあなたの問題だと賭けるでしょう。

また、代わりに

OR (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd flr Staff Entrance (out)' 
OR (vw_ReportQuery.[6002DoorName]) LIKE 'Gnd flr Sub-let entrance (out)' 
OR .... 

のあなたは、単におそらく、あなたがテーブルの別名が必要

OR vw_ReportQuery.[6002DoorName] IN ('Gnd flr Staff Entrance (out)', 'Gnd flr Sub-let entrance (out)', {etcetera}) 
+0

私はテストとしてそれをコメントしましたが、残念ながらコメントを外してもまだ動作しません。 'IN'の使用に関するアドバイスをありがとう、このクエリを合理化するための何かが役に立つでしょう。私はこれまで、すべてのサブクエリをメインクエリに入れる前に自分たちで実行するようにしていました。私は自分自身でそれを構築するために多くの時間を持っていたいが、私はしない –

関連する問題