在关键字“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
在没有else
的case
表达式上,你不妨把它放在where
中。此外,出于同样的原因,right join
没有意义
您的查询语法错误。你在中间有GROUP BY
。请查看有关 SELECT
查询的正确语法的文档
【参考方案1】:
我想通了,感谢 youtube 上 wiseowl 教程的视频
【讨论】:
以上是关于在关键字“pivot”附近出现语法错误,提示语法不正确。我在这里想念啥的主要内容,如果未能解决你的问题,请参考以下文章
存储过程出现错误.关键字'ORDER'附近有语法错误.')'附近有语法错误.
运行代码并输入值 1 后,我的代码行出现 C# 错误,它一直弹出关键字“表”附近的语法不正确
错误 [42000] [Microsoft][SQL Native Client][SQL Server]关键字“SET”附近的语法不正确