Lütfen yardım edin!Çoklu alt sorgu ile SQL sözdizimi hatası
Sorgumun bir bölümünde sözdizimi hataları alıyorum ve neyin yanlış olduğunu anlayamıyorum. Intellisense kullanıyorum veritabanında çalışmıyor. Alt sorguları parantez içine almayı denedim, ancak bu hala bir sözdizimi hatası veriyor. Sorunu bilen var mı lütfen? Sanırım eksik bir ayraç ya da bir şey var ama alt sorguların sözdizimi hakkında bir şey bulamadım.
Yapmaya çalıştığım şey, varolan bir MS Access raporunu SQL'e dönüştürmektir, ki bu da verileri üretmek için birbirinin içine gömülen sorguların çok miktarda olması nedeniyle oldukça zor olduğunu kanıtlar. 'Qry' ile başlayan herhangi bir şey, Access'teki bir şeye referanstır. Bu sorgu, kapılardan personel giriş/çıkışını izlemek için kullanılan bir veritabanına aykırıdır ve katılım raporlaması için kullanılır. Ne yazık ki, şirket içi bir sistem olmadığından, veritabanı şemasına erişemiyorum, bu yüzden kendimi bir sorgu oluşturmaya çalışıyorum. Ben tam bir şey gönderebilirim ama bağlam olmadan çok anlamlı olmayabilir? Şimdilik, sorgunun bir kısmını yayınlayacağım. Ben alıyorum
hataları: Aşağıdaki SQL sorgusunun
>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'.
parçası. 21. satırın ilk "DOĞRU JOIN" olduğu yer olduğunu unutmayın.
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
Belki tablo diğer adları ihtiyaç yapabilirim? – jarlh
Nereye gittiklerini bilmiyorum. Her 'ON' ya da başka bir yerden sonra mı? –