首页 > 解决方案 > 将列名声明为变量

问题描述

我在下面的查询中遇到了问题。

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 可能会产生大量输出)。

标签: sqlsybase

解决方案


If you run an custom SQL statement you should execute it like that:

exec (@SQL)

推荐阅读