这是第一张表
张三       语文       80
张三       数学       86
张三       英语       75
李四       语文       80
李四       数学       85
李四       英语       80第2张表是
张三       物理       68
张三       化学       88
李四       物理       77
李四       化学       82 declare @sql varchar(8000)
set @sql='select name[姓名]'
select @sql=@sql+','+subject+'=max(case subject when '''+subject+''' then result else 0 end)'
from (select distinct subject from cj)a
exec(@sql+',号码 from cj a,b where a.name=b.姓名 group by name,号码')declare @sql2 varchar(8000)
set @sql='select name2[姓名]'
select @sql=@sql+','+subject2+'=max(case subject2 when '''+subject2+''' then result2 else 0 end)'
from (select distinct subject2 from cj2)a
exec(@sql+',号码 from cj2 a,b where a.name2=b.姓名 group by name2,号码')
我就是要把这2个转换后的结果结合起来

解决方案 »

  1.   

    declare @sql varchar(8000) 
    set @sql='select name[姓名]' 
    select @sql=@sql+','+subject+'=max(case subject when '''+subject+''' then result else 0 end)' 
    from (select distinct subject from cj)a declare @sql2 varchar(8000) 
    set @sql='select name2[姓名]' 
    select @sql=@sql+','+subject2+'=max(case subject2 when '''+subject2+''' then result2 else 0 end)' 
    from (select distinct subject2 from cj2)a exec(@sql+',号码 from cj a,b where a.name=b.姓名 group by name,号码 union all '+
    @sql+',号码 from cj2 a,b where a.name2=b.姓名 group by name2,号码') 
      

  2.   

    狙击手不行呢,把你的输入进去显示
    服务器: 消息 207,级别 16,状态 3,行 1
    列名 'name2' 无效。
    服务器: 消息 207,级别 16,状态 1,行 1
    列名 'result2' 无效。
    服务器: 消息 207,级别 16,状态 1,行 1
    列名 'subject2' 无效。
    服务器: 消息 207,级别 16,状态 1,行 1
    列名 'result2' 无效。
    服务器: 消息 207,级别 16,状态 1,行 1
    列名 'subject2' 无效。
      

  3.   

    print (@sql+',号码 from cj a,b where a.name=b.姓名 group by name,号码 union all '+
    @sql+',号码 from cj2 a,b where a.name2=b.姓名 group by name2,号码') 
    把这个结果 我看看
      

  4.   

    我上面的第1张表是cj表,第2张表是cj2表,还有一张b表
    在cj表中的属性是name,subject,result
    在cj2表中的属性是name2,subject2,result2
      

  5.   

    declare @sql varchar(8000) 
    set @sql='select name[姓名]' 
    select @sql=@sql+','+subject+'=max(case subject when '''+subject+''' then result else 0 end)' 
    from (select distinct subject from cj)a declare @sql2 varchar(8000) 
    set @sql2='select name2[姓名]' 
    select @sql2=@sql2+','+subject2+'=max(case subject2 when '''+subject2+''' then result2 else 0 end)' 
    from (select distinct subject2 from cj2)a exec(@sql+',号码 from cj a,b where a.name=b.姓名 group by name,号码 union all '+
    @sql2+',号码 from cj2 a,b where a.name2=b.姓名 group by name2,号码') 
      

  6.   

    单独去执行
    print (@sql+',号码 from cj a,b where a.name=b.姓名 group by name,号码 union all '+
    @sql+',号码 from cj2 a,b where a.name2=b.姓名 group by name2,号码') 
    是没有任何结果的,没有反应,
    也就是说只现在我2个分语句的结果