数据列不确定,如何插入?

xeonfeng 2008-11-14 11:46:43
如图所示
表一(上面的)结构固定,字段确定
表二(下面的)是动态生成的表,字段可能比表一少,缺少字段不确定

如何将表二的数据插入到表一中?
...全文
136 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2008-11-14
  • 打赏
  • 举报
回复
-- 字段列表你可以拼的嘛
DECLARE @sql VARCHAR(8000),
@cols varchar(80000;


SET @sql = 'SELECT Opearcode'
SET @cols = ''
SELECT @sql = @sql + ',SUM(CASE breedCode WHEN ''' + BreedCode + ''' THEN total END) [' + BreedCode + ']' ,
@cols = @cols + ',[' + BreedCode + ']'
FROM (SELECT DISTINCT BreedCode FROM #tmpTable) AS C

SELECT @sql = @sql + 'from #tmpTable group by oprcode'
SELECT @cols = STUFF(@cols, 1, 1, '')

EXEC( '
INSERT 表一(' + @cols + ') ' + @sql)
等不到来世 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xeonfeng 的回复:]
呵呵,我是通过行列转换得到的表二
所以表的字段不固定,
如果能列出来的话,问题就解决了

另外如何保存 EXEC( @sql)执行后的数据表

以下是行列转换代码
DECLARE @sql VARCHAR(8000)

SET @sql = 'SELECT Opearcode'
SELECT @sql = @sql + ',SUM(CASE breedCode WHEN ''' + BreedCode + ''' THEN total END) [' + BreedCode + ']'
FROM (SELECT DISTINCT BreedCode FROM #tmpTab…
[/Quote]
将代码中的SELECT DISTINCT BreedCode FROM #tmpTable
换成---> SELECT DISTINCT BreedCode FROM 原始表
水族杰纶 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xeonfeng 的回复:]
呵呵,我是通过行列转换得到的表二
所以表的字段不固定,
如果能列出来的话,问题就解决了

另外如何保存 EXEC( @sql)执行后的数据表

以下是行列转换代码
DECLARE @sql VARCHAR(8000)

SET @sql = 'SELECT Opearcode'
SELECT @sql = @sql + ',SUM(CASE breedCode WHEN ''' + BreedCode + ''' THEN total END) [' + BreedCode + ']'
FROM (SELECT DISTINCT BreedCode FROM #tmpTab…
[/Quote]
表的字段不固定,無法insert tb exec(@sql)
等不到来世 2008-11-14
  • 打赏
  • 举报
回复
动态生成表2时,产生与表1列数相同的列,没有值的列补null,但列数保证与表1一致。
然后可以用: insert tb1 select * from tb2
xeonfeng 2008-11-14
  • 打赏
  • 举报
回复
呵呵,我是通过行列转换得到的表二
所以表的字段不固定,
如果能列出来的话,问题就解决了

另外如何保存 EXEC( @sql)执行后的数据表

以下是行列转换代码
DECLARE @sql VARCHAR(8000)

SET @sql = 'SELECT Opearcode'
SELECT @sql = @sql + ',SUM(CASE breedCode WHEN ''' + BreedCode + ''' THEN total END) [' + BreedCode + ']'
FROM (SELECT DISTINCT BreedCode FROM #tmpTable) AS C

SELECT @sql = @sql + 'from #tmpTable group by oprcode'

EXEC( @sql)
ws_hgo 2008-11-14
  • 打赏
  • 举报
回复
动态生成
水族杰纶 2008-11-14
  • 打赏
  • 举报
回复
insert tb1(col,col2...)select col,col2... from tb2 --注意字段對應類型一致
fcuandy 2008-11-14
  • 打赏
  • 举报
回复
插入语句也动态生成...
zjcxc 2008-11-14
  • 打赏
  • 举报
回复
或者把表二存成临时表, 这样通过访问 tempdb..syscolumns 也可以拿出列的列表
zjcxc 2008-11-14
  • 打赏
  • 举报
回复
表二(下面的)是动态生成的表
----------------------- 生成的时候顺便把列的列表也生成出来, 这样就可以插入了
xeonfeng 2008-11-14
  • 打赏
  • 举报
回复
问题没有彻底解决,但是找到了变通的方法,
结贴!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧