我想要一个查询或SSIS解决方案来解决我的问题。 我有一张主桌。 我想要一个查询,创建一些名称为我的列值之一的表,并将相关记录复制到该表。 示例:
name, id, address,tell
aaa , 1 , asfsaf , 234
bbb , 23 , afa , 654
aaa , 34 , kkk , 73
ccc , 3434 ,hfdg , 643
ccc , 325 , uytr , 876
因此创建3个名为“aaa”,“bbb”和“ccc”的表。 有关更多信息,我附上了一张照片:
谢谢
答案 0 :(得分:0)
你需要能够动态创建表,使用EXEC('insert DDL HERE'),你最好调用一个存储过程来处理这个,而不是试图在SSIS中做。在这里查看EXEC命令。
Dynamic SQL - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL)
第1步: 获取不同的“新表”列表
SELECT DISTINCT name
INTO #TMP_newTables
步骤2:
为通过游标(http://blog.sqlauthority.com/2007/01/01/sql-server-simple-example-of-cursor/)
捕获的每一行创建一个表第3步: 在游标内部发出EXEC('CREATE TABLE .......')语法。
第4步: 将当前表的数据存储到TEMP表中。
SELECT col1,col2,col3
FROM MainTable
INTO #TMP_DATA
WHERE name = @CurrentName
SET @InsertSQL = 'INSERT ' + @CurrentName +'(col,col2,col3) SELECT col1,col2,col3 FROM #TMP_DATA'
EXEC(@InsertSQL)
DROP TABLE #TMP_DATA
DROP TABLE #TMP_newTables