Sql server 消息102,第15级,状态1,第9行'附近语法不正确;('-
我正在SQL Server 2008中处理一个交叉表查询。除了我遇到的这个错误之外,所有的事情看起来都很好 这是我的密码:Sql server 消息102,第15级,状态1,第9行'附近语法不正确;('-,sql-server,pivot,Sql Server,Pivot,我正在SQL Server 2008中处理一个交叉表查询。除了我遇到的这个错误之外,所有的事情看起来都很好 这是我的密码: select * from (select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID from dbo.ODST_PRODUCTION_TRANS ) n pivot (sum(NET_PRODUCTION_QUANTITY) for datename(mon
select * from
(select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID from dbo.ODST_PRODUCTION_TRANS
) n
pivot
(sum(NET_PRODUCTION_QUANTITY) for datename(month,DATE_ID) In ([January],[February],[March],[April],[May],[June])) as pvt
where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'.
问题是datename(month,date\u id)
在哪里,但我想不出来。有人能给我一个解决方案吗
提前感谢试试看
select * from
(select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID, datename(month,DATE_ID) as Month from dbo.ODST_PRODUCTION_TRANS
) n
pivot
(
sum(NET_PRODUCTION_QUANTITY)
for Month
In ([January],[February],[March],[April],[May],[June])
) as pvt
where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'
我认为pivot不喜欢datename表达式,因此我将其移动到查询中。它应该是这样的:
select * from
(select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID,datename(month,[DATE_ID]) as dtt
from dbo.ODST_PRODUCTION_TRANS) as n
pivot
(
sum(NET_PRODUCTION_QUANTITY)
for [dtt] IN ([January],[February],[March],[April],[May],[June])) as pvt
where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'
我不认为pivot的FOR部分可以是pivot时的计算值,它必须在结果集中
select * from
(select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID,datename(month,DATE_ID) as dn from dbo.ODST_PRODUCTION_TRANS
) n
pivot
(sum(NET_PRODUCTION_QUANTITY) for dn In ([January],[February],[March],[April],[May],[June])) as pvt
where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'
你是对的,它应该在查询中。非常感谢你的回答