SQL Server错误102“
问题描述:
”附近的语法不正确它只是告诉我在附近有一个错误“。任何帮助?这是否意味着问题靠近一个空间?我见过其他人在'<'或';'附近遇到类似的问题,但不只是”。SQL Server错误102“
SELECT CO.JCCo, CO.Contract, CO.PCO AS PCO, CO.PCOType, MAX(CO.COStatus) AS Status, MAX(CO.COApprovedYN) AS Approved,
SUM(CO.COContPendAmt) AS PriceAmount,
SUM(CO.COCostDollars) AS CostAmount,
SUM(CO.COContPendAmt) - SUM(CO.COCostDollars) AS CO_Profit,
PMOP.Description, PMOP.PendingStatus, MAX(PMOP.DateCreated) AS PODate, GETDATE() AS Today, DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE()) AS DaysOutstanding, (CASE WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) < 30 THEN 'Less than 30'
WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 30 AND (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) <= 60 THEN ' 30 - 60 ' WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 60 AND (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) <= 90 THEN ' 60 - 90 '
WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 90 THEN ' Over 90 ' ELSE 'Less than 30' END) AS AgingCategory,
PMOI.FixedAmount AS FixedAmount, PMOI.PendingAmount AS PendingAmount, PMOI.PCOItem,
(SELECT JCJM.ProjectMgr FROM JCJM WHERE JCJM.Job = CO.Contract AND JCJM.JCCo = 1) AS ProjectManager
FROM brvJCCostRevChgOrders AS CO
RIGHT JOIN PMOP ON CO.PCOType = PMOP.PCOType AND CO.PCO = PMOP.PCO AND CO.Contract = PMOP.Contract
RIGHT JOIN PMOI ON PMOP.PCOType = PMOI.PCOType AND PMOP.PCO = PMOI.PCO AND PMOP.Project = PMOI.Project
WHERE (PMOP.PendingStatus = 0) AND (CO.JCCo = 1) AND PMOP.Status <> 'VOID' AND PMOI.PMCo = 1 AND PMOP.PMCo = 1 AND (SELECT JCJM.ProjectMgr FROM JCJM WHERE JCJM.Job = CO.Contract AND JCJM.JCCo = 1) IS NOT NULL
GROUP BY CO.JCCo, CO.Contract, CO.PCO, PMOP.Description, CO.PCOType, PMOP.PendingStatus, PMOI.PCOItem, PMOI.FixedAmount, PMOI.PendingAmount
ORDER BY CO.Contract, CO.PCOType
答
这部分....
WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 30 AND (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) <= 60 THEN ' 30 - 60 ' WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 60 AND (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) <= 90 THEN ' 60 - 90 '
WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 90 THEN ' Over 90 ' ELSE 'Less than 30' END) AS AgingCategory,
缺少CASE
之初,看似在年底有一个括号胭脂。
以下是更正版本:
CASE
WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 30 AND (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) <= 60
THEN ' 30 - 60 ',
WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 60 AND (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) <= 90
THEN ' 60 - 90 ',
WHEN (DATEDIFF(d, MAX(PMOP.DateCreated), GETDATE())) > 90
THEN ' Over 90 '
ELSE 'Less than 30'
END AS AgingCategory,
答
要获取完整的错误消息,请将您的SQL代码复制到S QL服务器管理工作室。选择你需要的数据库并运行它。如果任何角色出现问题,它会在消息标签中显示如下。
如果仍然很难说,你可以双击错误,它会带你到错误的代码行。
靠近哪条线的语法不正确?你能给出整个错误信息吗? –
我看到的唯一问题是你在where子句中有一个select可能返回多个值,Exists应该用来代替 – JamieD77
它不会说哪一行。它在Visual Studio中。它实际上只是告诉我错误102,错误的语法附近“。 –