将SQL与公用表表达式(CTE)一起使用时出现错误

时间:2019-06-18 17:38:09

标签: sql sql-server

我是SQL新手。我正在尝试使用SQL CTE,但始终收到错误消息:

Msg 102, Level 15, State 1, Line 16
Incorrect syntax near ')'.

我正在使用ms-sql并阅读以下blog作为指南。

这是我的查询

WITH parents(BranchCode, SOLD,BANKERSCOUNT, [TARGET]) AS
(
    SELECT          MS.ParentBranchCode, 
                    SUM(NP.SOLD)  SOLD, 
                    SUM(NP.BANKERSCOUNT)  BANKERSCOUNT, 
                    SUM(NP.[TARGET]) [TARGET]
    FROM            NEDLLIFEPARTICIPATION NP
    INNER JOIN      m_Structure MS
    ON              MS.BranchCode = NP.BranchCode
    GROUP BY        MS.ParentBranchCode, NP.Year, NP.MONTH, NP.ProductId
)

1 个答案:

答案 0 :(得分:4)

这是否给您一个错误?如果不是,则可能是您只是在公用表表达式之后未包含select语句。这可以解释您的错误为什么显示右括号的问题,它只是告诉您(如果我的假设正确),您的CTE未在查询中使用(因此将无法编译)。

WITH parents(BranchCode, SOLD,BANKERSCOUNT, [TARGET]) AS   
(
    SELECT          MS.ParentBranchCode, 
                SUM(NP.SOLD)  SOLD, 
                SUM(NP.BANKERSCOUNT)  BANKERSCOUNT, 
                SUM(NP.[TARGET]) [TARGET]
    FROM            NEDLLIFEPARTICIPATION NP
    INNER JOIN      m_Structure MS
    ON              MS.BranchCode = NP.BranchCode
    GROUP BY        MS.ParentBranchCode, NP.Year, NP.MONTH, NP.ProductId
)

select * from parents;