我正在尝试使用全局参数将数据从一个表复制到另一个表以定义本地参数。本地参数的字符串值会相应更改,但是,当我尝试将它们用作引用的列名称时,它会填充我尝试使用参数值而不是来自列的值的colpy to colill的列。其他表。我是sql的新手,所以我被卡住了。
DECLARE @ProductName VarChar(255), @SiteName VarChar(255)
SET @ProductName =
CASE @@[Level]
WHEN 1 THEN 'MaterialAggName'
WHEN 2 THEN 'TradeAggName'
WHEN 3 THEN 'ProfitCenterAggName'
WHEN 4 THEN 'PerformanceCenterAggName'
WHEN 5 THEN 'ValueCenterAggName'
WHEN 6 THEN 'BusinessAggName'
END;
SET @SiteName =
CASE @@[CustomerLevel]
WHEN 1 THEN 'Customer_Postal_Name'
WHEN 2 THEN 'Customer_3DigitPostal_Name'
WHEN 3 THEN 'Customer_Location_Name'
WHEN 4 THEN 'Customer_Region_Name'
WHEN 5 THEN 'Customer_County_Name'
WHEN 6 THEN 'Customer_GeoBusiness_Name'
END;
CREATE TABLE [dbo].[Temp_Demand]
(
SiteName VarChar(255),
ProductName VarChar(255),
Quantity Int
)
INSERT INTO [dbo].[Temp_Demand] (SiteName, ProductName, Quantity)
SELECT @SiteName, @ProductName, Final
FROM [dbo].[Customers_Master]
任何建议?
答案 0 :(得分:0)
要做到这一点,你需要使用动态SQL,你的插入语句需要类似的东西。
DECLARE @SQL NVARCHAR(MAX)
Set @SQL = 'INSERT INTO [dbo].[Temp_Demand] (SiteName, ProductName, Quantity)
SELECT ''' + @SiteName + ''', ''' + @ProductName + ''', Final
FROM [dbo].[Customers_Master]'
sp_executesql @SQL
如果有多个插入更改值,只需将其置于循环中即可。 *除了声明当然。