在关键字“pivot”附近出现语法错误,提示语法不正确。我在这里想念啥

Posted

技术标签:

【中文标题】在关键字“pivot”附近出现语法错误,提示语法不正确。我在这里想念啥【英文标题】:Getting a syntax error saying Incorrect syntax near the keyword 'pivot'. What is that i am missing here在关键字“pivot”附近出现语法错误,提示语法不正确。我在这里想念什么 【发布时间】:2021-04-01 21:57:26 【问题描述】:

我的动态 SQL 生成了以下代码。

当我尝试运行它时,我收到一个语法错误,提示“关键字'pivot'附近的语法不正确。”

我在这里缺少什么?

    SELECT month (Sale.[Date]) as Month, 
    [5],
    [10],
    [15],
    [20],
    [25],
    [30],
    [35],
    [40],
    [45],
    [60] 
    INTO ##TBL_TEMP 
    from Limit L 
    right join Store S 
      on L.Limit_Mins = S.Limit_Mins 
    join Sale Sa 
      on S.Store_Number=Sa.Store_number 
    join [Date] Dt 
      on Dt.[Date]=Sa.[Date] 
    join Product P 
      on Sa.PID=P.PID 
    left outer join Discount D 
      on Sa.PID=D.PID and Sa.[Date]=D.Discount_Date 
    group by month (Sale.[Date]),
        case  when S.Limit_Mins = L.Limit_Mins and S.Childcare_Flag=1 then S.Limit_Mins end  
    pivot (
        sum(case when S.Limit_Mins = L.Limit_Mins and S.Childcare_Flag=1 then
               case when D.PID =Sa.PID and D.Discount_Date=Sa.[Date] then
                   D.Discount_Price
               else
                   P.Retail_price
               end
               * Sa.Quantity
            else
               0
            end ),   
        sum(case when S.Childcare_Flag = 0 then
                case when D.PID =Sa.PID and D.Discount_Date=Sa.[Date] then
                    D.Discount_Price
                else
                    P.Retail_price
                end
                * Sa.Quantity
            else
                0
            end)  
    for
        case when S.Limit_Mins = L.Limit_Mins and S.Childcare_Flag=1 then
           S.Limit_Mins end 
    in ([5],[10],[15],[20],[25],[30],[35],[40],[45],[60])
) as Q

【问题讨论】:

你真的应该把你的查询格式化成更易读的东西,并适当缩进,这对某人来说是一团糟:) 我不明白:这是动态生成的,因为它没有任何动态。您的语法有很多错误:您只能在一个列上PIVOT,并且它必须在单个表或派生的子查询/CTE 上,因此您必须将其放入子查询/CTE。我还质疑为什么for 在没有elsecase 表达式上,你不妨把它放在where 中。此外,出于同样的原因,right join 没有意义 您的查询语法错误。你在中间有GROUP BY。请查看有关 SELECT 查询的正确语法的文档 【参考方案1】:

我想通了,感谢 youtube 上 wiseowl 教程的视频

【讨论】:

以上是关于在关键字“pivot”附近出现语法错误,提示语法不正确。我在这里想念啥的主要内容,如果未能解决你的问题,请参考以下文章

关键字“read”附近的语法不正确

存储过程出现错误.关键字'ORDER'附近有语法错误.')'附近有语法错误.

运行代码并输入值 1 后,我的代码行出现 C# 错误,它一直弹出关键字“表”附近的语法不正确

错误 [42000] [Microsoft][SQL Native Client][SQL Server]关键字“SET”附近的语法不正确

错误“关键字 'CONVERT' 附近的语法不正确”

关键字“FOR”XML 附近的语法不正确