UNPIVOT本地临时表#tempTbl_tblF0902时列名无效的问题排查与修复
修复UNPIVOT操作中的“Invalid column name”错误
错误原因
- UNPIVOT结果集未指定别名:SQL语法要求,使用UNPIVOT完成列转行后,必须为生成的中间结果集指定表别名。你的脚本中UNPIVOT块结束后没有添加别名,导致外层SELECT无法识别UNPIVOT生成的
[Periods]和[Postings]列,这是触发“Invalid column name”报错的核心原因。 - 编辑器中DROP语句的红色波浪线是连带问题,因为前面的语法错误导致编辑器无法正确解析脚本上下文,修复核心语法错误后该问题会自动消失。
修复后的脚本
SELECT [JDE Fiscal Year], [Business Unit], [Cost Code], [Cost Description], [Cost with Description], [Trade Code], [Trade Description], [Trade with Description], [Periods], [Postings] FROM ( SELECT * FROM #tempTbl_tblF0902 ) as pvt UNPIVOT ( [Postings] FOR [Periods] IN ([Balance Forward],[Net Posting 01], [Net Posting 02], [Net Posting 03], [Net Posting 04], [Net Posting 05], [Net Posting 06], [Net Posting 07], [Net Posting 08], [Net Posting 09], [Net Posting 10], [Net Posting 11], [Net Posting 12] ) ) AS unpvt -- 必须添加别名,让外层查询能识别UNPIVOT生成的列 DROP TABLE #tempTbl_tblF0902
说明
添加AS unpvt(别名可自定义)后,UNPIVOT生成的结果集被赋予了合法的引用标识,外层查询就能正确调用[Periods]和[Postings]列,同时编辑器的语法提示错误也会随之消失。
内容的提问来源于stack exchange,提问作者David.L
相关产品推荐
相关产品推荐

