【问题标题】:Using Union all to SQL Queries to create Dynamic Column Names使用 Union all to SQL 查询创建动态列名
【发布时间】:2015-09-16 09:33:44
【问题描述】:

请在下面查看我的代码

set @query = 'SELECT tenantcode, locationd, name, MONTH,' +
'Year1 as' + '[' + @Year1  + ']'  +
',Year2 as' + '[' + @Year2  + ']'  + 
',Year3 as' + '[' + @Year3  + ']'  +
',Year4 as' + '[' + @Year4  + ']'  +
',Year5 as' + '[' + @Year5 + ']'  +
'from #SalesPerYear' +
'UNION ALL' +
'SELECT  tenantcode, locationd, name, total , t1, t2,t3,t4,t5 FROM #TotalSales ' 


EXECUTE (@query)

这是我希望在 SQL 中实现最终输出的代码的一部分 WHERE COLUMN NAMES 应该是动态的(在这种情况下,不断变化的年份名称,例如 2011、2012、2013 等)

执行我的存储过程,出现这样的错误

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

当我全部删除联合时,两个查询都单独工作。这可能是什么问题。

【问题讨论】:

  • 运行这个命令“print @query”,然后在这里发布它返回的内容

标签: sql sql-server sql-server-2008 stored-procedures


【解决方案1】:

您在from #SalesPerYearUNION ALL 之间缺少一个空格,还有以下SELECT

....
'from #SalesPerYear '
                   ^---here
'UNION ALL' +
' SELECT  tenantcode, locationd, name, total , t1, t2,t3,t4,t5 FROM #TotalSales ' 
 ^--- and here

这是最简单的演示方法,你当然可以在UNION ALL的两侧放一个空格

' UNION ALL ' +

【讨论】:

  • 哇!它确实有效!虽然我觉得空间如何破坏整个代码真的很奇怪。谢谢
  • 真的吗?如果您将SELECT x,y,z from myTableUNIONselect a,b,c from myothertable 输入到 SQL 管理工作室,您认为它看起来像有效 SQL 吗?
  • 耶!好的,你让我在那里!我以为我在 UNION 和 SELECT 之前的代码上有一个空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多