我得到了帮助以获取选择查询以获取正确的数据,但我如何将其插入表中。
继
Select RIGHT(RTRIM(Template_name), 2) country
from TABLE
这对我有用: 示例数据:
Template_name Country
Party_package_US US
PARTY_Package_GB GB
Random_temp_DE DE
但主要问题是我如何在表格中插入template_name并仅将国家/地区首字母添加到新列。
我之前获得帮助的问题的链接:how to get info from VARCHAR column and create new column out of it
我认为我可以进行子选择,将正确的表单插入新列
UPDATE #silverpop_header
SET MARKET_AREA = a.template_name
FROM #silverpop_header pop
join dw.f_CRM a
ON pop.template_name = a.TEMPLATE_NAME
left join (
select
RIGHT(RTRIM(Template_name), 2) country
from dw.f_CRM )
但我认为我在某种程度上做错了
答案 0 :(得分:1)
但主要问题是我如何在表格中插入template_name并仅将国家/地区首字母添加到新列。
请根据上述评论找到以下脚本执行操作:
update silverpop_header set MARKET_AREA = (Select RIGHT(RTRIM(Template_name), 2) country from silverpop_header a where a.TEMPLATE_NAME = 'Party_package_US');
这将更新Party_package_US模板的记录。如果要对所有模板执行,则必须编写一个简单的游标来读取所有template_name并为每个模板执行相同的更新查询。
如果需要,请更新我。
找到为SQLServer编写的光标。
DECLARE @TAMPLATENAME VARCHAR(100), @SQL VARCHAR(500), @quotes varchar(4)
DECLARE UPDATE_COUNTRIES CURSOR FOR SELECT TEMPLATE_NAME FROM silverpop_header
set @quotes = '''';
OPEN UPDATE_COUNTRIES
FETCH NEXT FROM UPDATE_COUNTRIES INTO @TAMPLATENAME
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'update silverpop_header set MARKET_AREA = (Select RIGHT(RTRIM(Template_name), 2) country from silverpop_header a where a.TEMPLATE_NAME = '+@quotes+@TAMPLATENAME+@quotes+' ) where TEMPLATE_NAME = '+@quotes+@TAMPLATENAME+@quotes
print(@SQL)
EXEC(@SQL)
FETCH NEXT FROM UPDATE_COUNTRIES INTO @TAMPLATENAME
END
CLOSE UPDATE_COUNTRIES
DEALLOCATE UPDATE_COUNTRIES
答案 1 :(得分:0)
最终结果如下:
update #temp_table
set veerg2 = RIGHT(RTRIM(nimi), 3)
from #temp_table a
where a.nimi is not NULL ;
只需在SET部分切出选择就可以了解