sql - 将列名声明为变量
问题描述
我在下面的查询中遇到了问题。
DECLARE @CC VARCHAR(100)
SET @CC = 'MKT_COV_CAR_LFR'
DECLARE @SQL VARCHAR(16384)
SET @SQL =
'INSERT INTO PP_Industry
SELECT
R.Year,
''01'' AS Carline,
Sales_Locality,
'+@CC+' AS Reg,
National_Reg,
CAST('+@CC+' AS FLOAT) / CAST(National_Reg AS FLOAT) AS Reg_Share
FROM
PP_Registrations AS R
JOIN
(
SELECT
Year,
SUM('+@CC+') AS National_Reg
FROM
PP_Registrations
GROUP BY
Year
) AS SQ ON R.Year = SQ.Year'
EXEC @SQL
我在运行它时收到以下错误。请帮忙!
错误 (2812) 未找到存储过程 'INSERT INTO PP_Industry SELECT R.Year, '01' AS Carline, Sales_Locality, MKT_COV_CAR_LFR AS Reg, Nationa'。指定 owner.objectname 或使用 sp_help 检查对象是否存在(sp_help 可能会产生大量输出)。
解决方案
If you run an custom SQL statement you should execute it like that:
exec (@SQL)
推荐阅读
- r - 有没有一种在一个图上绘制两条回归线的好方法?
- angular - Angular 7 应用程序中的样式标签,它们来自哪里
- python - 如何只添加那些尚未添加到数据库中的记录
- spring - 从 weblogic.xml 为 HTTPS 设置安全 cookie
- laravel - 当我从数据库中提取数据时,表未显示
- continuous-integration - 在drone.io 中的步骤之间共享变量
- mysql - 如何在mysql中用{}替换空值?
- tensorflow - Tensorflow,我应该注意错误“将稀疏 IndexedSlices 转换为未知形状的密集张量。”
- tensorflow - TensorFlow 服务于 S3 和 Docker
- r - 如何在 for 循环中 rbind 数据帧