+ -
当前位置:首页 → 问答吧 → 继续求教··· 关于把动态查询的结果合并起来

继续求教··· 关于把动态查询的结果合并起来

时间:2011-12-07

来源:互联网

还是那个老例子
这是第一张表
张三 语文 80
张三 数学 86
张三 英语 75
李四 语文 80
李四 数学 85
李四 英语 80

第2张表是
张三 物理 68
张三 化学 88
李四 物理 77
李四 化学 82


2个表都经过动态转换exec(@sql)的那转换并显示出来
第一张表显示出来
  语文 数学 英语
张三 80 86 75
李四 80 85 80



第二张表显示出来
  物理 化学  
张三 68 88  
李四 77 82



最后要的效果就是把2个查询结果合并起来变成  
  语文 数学 英语 物理 化学
张三 80 86 75 68 88
李四 80 85 80 77 82


注意最开始是2张表,哪位能够告诉

作者: asllk   发布时间: 2011-12-07

表设计不合理吧,为什么当初不放在一张表里

作者: pengxuan   发布时间: 2011-12-07

先用
insert into #t
select * from tb1
union all
select * from tb2
两表union all之后存到临时表#t里
然后再对#t进行动态行列转换

作者: pengxuan   发布时间: 2011-12-07

把两个表合并起来后再查询?

SQL code
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from (select * from tb1 union all select * from tb2) t) as a
set @sql = @sql + ' from (select * from tb1 union all select * from tb2) t group by 姓名'
exec(@sql) 

作者: dawugui   发布时间: 2011-12-07

你这个是一样的道理 先把表UNION ALL 再行转列就可以了

作者: fredrickhu   发布时间: 2011-12-07

两个办法:
1.两张表分别转换,然后连接.
2.用union将两张表合并,再一起转换.

相信行转列的列子楼主已经看过不少了,应该能弄得出来.

作者: qianjin036a   发布时间: 2011-12-07