exec('select * from ('+@sql+') A inner join 表2 B on A.name=B.name')--在另一帖已回

解决方案 »

  1.   

    exec('select A.*,B.nation from ('+@sql+') A inner join 表2 B on A.name=B.name')
      

  2.   

    exec('select * from ('+@sql+') _a left join 表2 _b on _a.name=_b.name')
      

  3.   

    declare @sql varchar(4000)
    set @sql = 'select Name'
    select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
    from (select distinct Subject from CJ) as a
    select @sql = @sql+' ,nation from CJ a,xx b where a.name=b.name group by a.name'
    exec(@sql)
      

  4.   

    create table cj
    (
    name varchar(10),
    subject varchar(10),
    result int
    )create table xx
    (
    name varchar(10),
    nation varchar(10)
    )insert into cj select '张三',    '语文',        80
    insert into cj select '张三',    '数学',        90
    insert into cj select '张三',    '物理',        85
    insert into cj select '李四',    '语文',        85
    insert into cj select '李四',    '数学',        92
    insert into cj select '李四',    '物理',        82insert into xx select '张三',   '汉族'
    insert into xx select '李四',   '黎族'--语句
    declare @sql varchar(4000)
    set @sql = 'select a.Name'
    select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
    from (select distinct Subject from CJ) as a
    select @sql = @sql+',nation from CJ a,xx b where a.name = b.name  group by a.name,b.nation'
    exec(@sql)--结果
    张三 90 85 80 汉族
    李四 92 82 85 黎族
      

  5.   


    create table CJ(Name nvarchar(10), Subject nvarchar(10), Result int)
    insert CJ select '张三',    '语文',        80
    union all select '张三',    '数学',        90
    union all select '张三',    '物理',        85
    union all select '李四',    '语文',        85
    union all select '李四',    '数学',        92
    union all select '李四',    '物理',        82
    create table xx(name nvarchar(10), nation nvarchar(10))
    insert xx select '张三',   '汉族'
    union all select '李四',   '黎族'declare @sql varchar(4000)
    set @sql = 'select CJ.Name,xx.nation'
    select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
    from (select distinct Subject from CJ) as a
    select @sql = @sql+' from CJ left join xx on CJ.Name=xx.name group by  CJ.Name, xx.nation'
    exec(@sql)--result
    Name       nation     数学          物理          语文          
    ---------- ---------- ----------- ----------- ----------- 
    张三         汉族         90          85          80
    李四         黎族         92          82          85