助けてください!複数のサブクエリ結合で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
を行うことができますか? – jarlh
私はどこに行くのか分かりません。それはそれぞれの「ON」の後か他のどこかですか? –