我收到以下查询错误。我不完全确定为什么。问题与查询连接
下面的查询是动态SQL,它被设置成变量和打印出来。
错误消息:
消息156,级别15,状态1,行 'AS' 关键字近60 语法不正确。 Msg 156,Level 15,State 1,Line 77 关键字'AS'附近的语法不正确。 Msg 156,Level 15,State 1,Line 86 关键字'AS'附近的语法不正确。
查询:
SELECT * FROM(SELECT * FROM (
SELECT vwGetMySDDocsLatest.Document_ID,
vwGetMySDDocsLatest.ViewPrintFlag AS ViewPrint,
vwGetMySDDocsLatest.ViewOnly,
vwGetMySDDocsLatest.DownloadFlag AS Download,
vwGetMySDDocsLatest.DocBookFlag AS DocBook,
vwGetMySDDocsLatest.Name_ID,
vwGetMySDDocsLatest.SheetNo,
vwGetMySDDocsLatest.SheetNoTotal,
vwGetMySDDocsLatest.Title,
vwGetMySDDocsLatest.Rev,
vwGetMySDDocsLatest.Rev_Date,
vwGetMySDDocsLatest.Rev_Purpose_Code,
vwGetMySDDocsLatest.[Filename],
vwGetMySDDocsLatest.Extension,
vwGetMySDDocsLatest.DocumentNo,
vwGetMySDDocsLatest.ClientDocument_No,
vwGetMySDDocsLatest.DEL_DOCSTRING,
vwGetMySDDocsLatest.RE_Init,
vwGetMySDDocsLatest.Project_ID
, 1 AS NumberOfRows , 1 AS NumberOfPages
,ROW_NUMBER() OVER(ORDER BY DocumentNo) As RN
FROM vwGetMySDDocsLatest INNER JOIN (SELECT DISTINCT tblSDDocuments_REV.Document_ID FROM tblSDDocuments_REV WHERE 1 = 1 ) AS DR2 ON vwGetMySDDocsLatest.Document_ID = DR2.Document_ID
WHERE vwGetMySDDocsLatest.Name_ID = 4362 AND
vwGetMySDDocsLatest.Project_ID = 349 AND
vwGetMySDDocsLatest.DocumentNo Like '%lp-0887-p01%'
) AS newTBL
WHERE newTBL.RN BETWEEN 1 AND 25) AS onePage
INNER JOIN (SELECT tblSDDocuments_Rev.DocumentRev_ID AS R_DocumentRev_ID ,
tblSDDocuments_Rev.Document_ID AS R_Document_ID,
tblSDDocuments_Rev.Rev AS R_Rev,
tblSDDocuments_Rev.Rev_Create_Date AS R_Rev_Create_Date,
tblSDDocuments_Rev.Rev_Due_Date AS R_Rev_Due_Date,
dbo.udfNameForward(tblSDDocuments_Rev.Rev_Due_From) AS R_NameFrom,
tblSDDocuments_Rev.Rev_Date AS R_Rev_Date,
dbo.tblRev_Purpose.Rev_Purpose_Code AS R_Rev_Purpose_Code,
tblSDDocuments_Rev.Flag AS R_Flag,
tblSDDocuments_Rev.Filename AS R_Filename,
tblFileExtensions.Extension AS R_Extension,
tblSDDocuments_Rev.Client_Filename AS R_Client_Filename,
dbo.tblRev_Purpose.Allow_Matrix_View AS R_Allow_Matrix_View,
tblSDDocuments_Rev.Filename_Available AS R_Filename_Available,
tblSDDocuments_Rev.Filename_Available_Other AS R_Filename_Available_Other,
tblRev_Purpose.Rev_Purpose_ID AS R_Rev_Purpose_ID
FROM tblSDDocuments_Rev
LEFT OUTER JOIN tblFileExtensions
ON tblSDDocuments_Rev.Extension_id = tblFileExtensions.Extension_ID
LEFT OUTER JOIN tbl_Name
ON tblSDDocuments_Rev.Rev_Due_From = tbl_Name.Name_Id
LEFT OUTER JOIN dbo.tblRev_Purpose
ON tblSDDocuments_Rev.Rev_Purpose_ID = dbo.tblRev_Purpose.Rev_Purpose_ID WHERE 1 = 1 ) AS TBLRevs
ON onePage.Document_ID = TBLRevs.R_Document_ID
INNER JOIN (SELECT Document_ID AS MDID, MAX(DocumentREV_ID) AS MAXREV
FROM tblSDDocuments_REV
--WHERE REV_Date IS NOT NULL
GROUP BY Document_ID) AS MAXTBL
ON MAXTBL.MDID = TBLRevs.R_Document_ID
INNER JOIN ((SELECT Document_ID AS MDID2, MAX(REV_DATE) AS MAXREVDATE
FROM tblSDDocuments_REV
GROUP BY Document_ID) AS MAX1
INNER JOIN tblSDDocuments_REV R1
ON MAX1.MAXREVDATE = R1.Rev_Date AND MAX1.MDID2 = R1.Document_ID) AS MAXDATETBL
ON MAXDATETBL.MDID2 = TBLRevs.R_Document_ID
LEFT OUTER JOIN(SELECT DISTINCT td.document_Rev_ID, a.Approval_Abbr
FROM tblsdtransmittal_documents td
inner join tblsdtransmittal t
on td.transmittal_id = t.transmittal_id
inner join tblDocuments_ApprovalType a
ON td.Approval_ID = a.Approval_ID
inner join (
SELECT MAX(t.created_date) AS LatestDate, td.Document_Rev_ID
FROM tblsdtransmittal t
INNER JOIN tblsdtransmittal_documents td
ON t.transmittal_id = td.transmittal_id
WHERE t.to_supplier = 1
GROUP by td.Document_Rev_ID) MAXDATE
ON td.document_Rev_ID = maxdate.document_Rev_ID AND t.created_date = MAXDATE.LatestDate) AS APPRTBL
ON tblrevs.r_documentrev_id = APPRTBL.document_Rev_ID
LEFT OUTER JOIN(SELECT SDRevComments_ID AS ETRevComments_ID,
SDRevComments_RevID AS ETRevComments_RevID,
SDRevComments_New_Filename AS ETRevComments_New_Filename,
SDRevComments_Orig_Filename AS ETRevComments_Orig_Filename,
SDRevComments_Description AS ETRevComments_Description
FROM tblSDDocuments_Rev_Comments) AS COMTBL
ON TBLRevs.R_DocumentREV_ID = COMTBL.ETRevComments_RevID
WHERE MAXTBL.MAXREV = TBLRevs.R_DocumentRev_ID ---check for latest/all revs
ORDER BY DocumentNo ,TBLRevs.R_Document_ID, TBLRevs.R_DocumentRev_ID DESC
如果我删除查询的这个部分:
INNER JOIN ((SELECT Document_ID AS MDID2, MAX(REV_DATE) AS MAXREVDATE
FROM tblSDDocuments_REV
GROUP BY Document_ID) AS MAX1
INNER JOIN tblSDDocuments_REV R1
ON MAX1.MAXREVDATE = R1.Rev_Date AND MAX1.MDID2 = R1.Document_ID) AS MAXDATETBL
ON MAXDATETBL.MDID2 = TBLRevs.R_Document_ID
它运行伟大。任何想法我在这里做错了吗?
为查询的该部分找到括号。 select语句前有2个左括号。相应的右括号在Group By ...之后)和内连接的最后一部分之后。如果我按照上面的建议删除一个,则查询有不同的问题。 – 2013-02-13 13:33:35
第一个括号后,你必须选择一些列,只有内部连接没有列选择。 – 2013-02-13 14:43:27