首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误消息- Msg 156,级别15,状态1,关键字'WHERE‘附近的不正确语法

错误消息- Msg 156,级别15,状态1,关键字'WHERE‘附近的不正确语法
EN

Stack Overflow用户
提问于 2017-09-07 14:30:48
回答 2查看 4.8K关注 0票数 0

当试图执行下面的SQL语句时,我遇到了一个错误。不知道在哪里是否还需要保留单词或括号,但我的想法已经没有了。

我得到错误-“Msg 156,第15级,状态1,第20行不正确的语法靠近关键字‘WHERE’”。

有人能帮我找出如何纠正这个错误吗?

提前感谢!

代码语言:javascript
复制
SELECT dbo.PURCHASING_DETAIL.ID
    ,dbo.SCA_SS_INVOICELINESALL.*
    ,dbo.SCA_SS_INVOICESALL.*
    ,dbo.PURCHASING_DETAIL.QUOTEDPRICE
    ,dbo.PURCHASING_DETAIL.GLACCT
    ,dbo.PURCHASING_DETAIL.[PO DATE]
FROM dbo.PURCHASING_DETAIL
INNER JOIN (
    (
        dbo.SCA_SS_INVOICELINESALL INNER JOIN dbo.SCA_SS_INVOICESALL ON dbo.SCA_SS_INVOICELINESALL.INVOICESALLID = dbo.SCA_SS_INVOICESALL.INVOICESALLID
        ) INNER JOIN dbo.PURCHASING_DETAIL ON (dbo.SCA_SS_INVOICELINESALL.SUPPARTNUM = dbo.PURCHASING_DETAIL.SUPPARTNUM)
        AND (dbo.SCA_SS_INVOICESALL.INVOICENUMBER = dbo.PURCHASING_DETAIL.INVOICENUM)
    )
INNER JOIN dbo.SCA_SS_LOCATION ON (dbo.SCA_SS_INVOICESALL.SHIPTOADDRID = dbo.SCA_SS_LOCATION.LOCATIONID)
    AND (dbo.PURCHASING_DETAIL.FACILITY = dbo.SCA_SS_LOCATION.FACILITYID)
WHERE (dbo.PURCHASING_DETAIL.[6DIGIT] = '50002')
    AND DATEDIFF(month, [PO DATE], GETDATE()) <= 12
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-07 14:43:52

您还拥有一些引用表而不是在联接中的联接表达式。这些可能应该在WHERE子句中。会有用的,但它真的很难读懂。

我也同意你应该删除所有括号。

另外,正如我在评论中提到的,您有两次Purchasing_Detail。

试试这个:

代码语言:javascript
复制
SELECT  dbo.PURCHASING_DETAIL.ID,
        dbo.SCA_SS_INVOICELINESALL.*,
        dbo.SCA_SS_INVOICESALL.*,
        dbo.PURCHASING_DETAIL.QUOTEDPRICE,
        dbo.PURCHASING_DETAIL.GLACCT,
        dbo.PURCHASING_DETAIL.[PO DATE]

FROM    dbo.SCA_SS_INVOICELINESALL

    INNER JOIN dbo.SCA_SS_INVOICESALL
        ON dbo.SCA_SS_INVOICELINESALL.INVOICESALLID = dbo.SCA_SS_INVOICESALL.INVOICESALLID

    INNER JOIN dbo.PURCHASING_DETAIL
        ON dbo.SCA_SS_INVOICELINESALL.SUPPARTNUM = dbo.PURCHASING_DETAIL.SUPPARTNUM 

    INNER JOIN dbo.SCA_SS_LOCATION
         ON (dbo.SCA_SS_INVOICESALL.SHIPTOADDRID = dbo.SCA_SS_LOCATION.LOCATIONID)

WHERE (dbo.PURCHASING_DETAIL.[6DIGIT] = '50002')
    AND (dbo.SCA_SS_INVOICESALL.INVOICENUMBER = dbo.PURCHASING_DETAIL.INVOICENUM)
    AND (dbo.PURCHASING_DETAIL.FACILITY = dbo.SCA_SS_LOCATION.FACILITYID)
    AND DATEDIFF(month,[PO DATE], GETDATE()) <= 12
票数 0
EN

Stack Overflow用户

发布于 2017-09-07 14:42:49

您的查询中有一些不必要的联接(比如重复的INNER JOIN dbo.PURCHASING_DETAIL)和一些无用的括号。试试这个:

代码语言:javascript
复制
SELECT  dbo.PURCHASING_DETAIL.ID,
        dbo.SCA_SS_INVOICELINESALL.*,
        dbo.SCA_SS_INVOICESALL.*,
        dbo.PURCHASING_DETAIL.QUOTEDPRICE,
        dbo.PURCHASING_DETAIL.GLACCT,
        dbo.PURCHASING_DETAIL.[PO DATE]
FROM    dbo.PURCHASING_DETAIL
JOIN    dbo.SCA_SS_INVOICELINESALL
    ON  dbo.SCA_SS_INVOICELINESALL.SUPPARTNUM = dbo.PURCHASING_DETAIL.SUPPARTNUM 
JOIN    dbo.SCA_SS_INVOICESALL      
    ON  dbo.SCA_SS_INVOICESALL.INVOICENUMBER = dbo.PURCHASING_DETAIL.INVOICENUM
JOIN    dbo.SCA_SS_LOCATION
    ON  dbo.SCA_SS_INVOICESALL.SHIPTOADDRID = dbo.SCA_SS_LOCATION.LOCATIONID AND
        dbo.PURCHASING_DETAIL.FACILITY = dbo.SCA_SS_LOCATION.FACILITYID
WHERE   dbo.PURCHASING_DETAIL.[6DIGIT] = '50002'
        AND DATEDIFF(month,[PO DATE], GETDATE()) <= 12
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46098982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档