我有一个我不知道如何用SQL解决的问题。或两个问题。
表1只有一列
+--------+--+
| Header | |
+--------+--+
| Name1 | |
| Name2 | |
| Name3 | |
| Name4 | |
| ... | |
+--------+--+
所以我想循环遍历这些行并将它们用作变量@variable。就像是:
IF OBJECT_ID('table_@variable','U') IS NOT NULL
DROP TABLE table_@variable
SELECT *
INTO table_@variable
FROM #@variable
因此,循环的第一条路线是:
IF OBJECT_ID('table_Name1','U') IS NOT NULL
DROP TABLE table_Name1
SELECT *
INTO table_Name1
FROM #Name1
第二:
IF OBJECT_ID('table_Name2','U') IS NOT NULL
DROP TABLE table_Name2
SELECT *
INTO table_Name2
FROM #Name2
依此类推,只要table1中有行
我希望我解释得足够好。
谢谢您的帮助。马特
ps我正在使用Microsoft SQL Server Management Studio运行查询。
您必须使用动态SQL来实现您的目标。
试试这个:
DECLARE @suffix varchar(100)
DECLARE #crs INSENSITIVE CURSOR FOR
SELECT header FROM yourtable
FOR READ ONLY
OPEN #crs
FETCH NEXT FROM #crs INTO @suffix
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @str nvarchar(1000)
SET @str = N'IF OBJECT_ID(''table_' + @suffix + ''',''U'') IS NOT NULL
DROP TABLE table_' + @suffix + '
SELECT * INTO table_' + @suffix + ' FROM #' + @suffix
EXECUTE sp_executesql @str
FETCH NEXT FROM #crs INTO @suffix
END
CLOSE #crs
DEALLOCATE #crs
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句