我正在努力解决如何为此做动态sql的语法。
我想做什么
我已经在检查主表并使用包含重复数据的表列表填充临时表。
然后通过循环遍历该临时表中的每一行以查看哪些表是重复的,使用游标,我想使用实际的表名,该名称被加载到变量中,然后选择 distinct 将此表中的记录转换为另一个临时表。
然后我想清除主表并将不同数据从temp重新加载到主表中。
这是光标之前的语句,用于加载具有重复项的表名的第一个临时表
INSERT INTO #TEMP_TBL_DUP_CNT
select cast(@rec_cnt as varchar(10)) reccnt, cast(@tbl_name as varchar(200))
tblnm
所以这是我在下面的光标,我已经将我的想法编号在1-4以下与上面的项目符号相关。语法是我正在努力的一点,并希望有关如何创建它的帮助。
DECLARE REC_CURSOR CURSOR FOR
-- Set select stamtent for cursor
select reccnt, tblnm
from #TEMP_TBL_DUP_CNT
OPEN REC_CURSOR
FETCH NEXT FROM REC_CURSOR INTO @rec_cnt, @tbl_name
WHILE @@FETCH_STATUS = 0
BEGIN
-- Check if record count is 0
-- if is larger than 0 then select distinct records from tbl name into
-- temp table
if @rec_cnt > 0
-- Need to load data into new temp table using dynamic SQL and @tbl_name
-- Ideally wanted to create a temp Table with dynamic name like
-- '#TEMP_' + @tbl_name giving #temp_Table_Name_1, #temp_Table_Name_2 etc.
--
1) Starting with something like :
-- SET @tbl_temp = '#TEMP_' + @tbl_name
2) Then select distinct * into temp like this:
-- SELECT 'distinct * INTO ' + @tbl_temp + ' FROM ' + @tbl_name
3) Then clear main table
-- TRUNCATE TABLE + '@tbl_name'
4) Then select from temp back into main table
-- SELECT '* INTO ' + @tbl_name + ' FROM ' + @tbl_temp
FETCH NEXT FROM REC_CURSOR INTO @rec_cnt, @tbl_name
END
CLOSE REC_CURSOR
DEALLOCATE REC_CURSOR
由于
安德鲁