declare @s varchar(8000)
set @s=''
select @s=@s+',max(case classID  when '''+classID+''' then ''√'' else ''×'' end) '+class
from  表2exec('select max(Teacher)'+@s+ ' from 表1 group by TeacherID')

解决方案 »

  1.   

    create table teacherTab(TeacherID int ,Teacher nvarchar(12),ClassId int)
    create table classTab(ClassId int ,Class nvarchar(12))insert into teacherTab select '4','lying','4'
    union all
    select '2','李四','2'
    union all
    select '3','王五','3'insert into classTab select '4','物理'
    union all
    select '2','数学'
    union all
    select '3','英语'
    union all
    select '4','物理'declare @s varchar(8000)
    set @s=''
    select @s=@s+',max(case rtrim(classID)  when '''+rtrim(classID)+''' then ''√'' else ''×'' end) '+class
    from  ClassTabexec('select max(Teacher) as '' '' '+@s+ ' from TeacherTab group by TeacherID')
      

  2.   

    修改以上没判断重复:
    create table teacherTab(TeacherID int ,Teacher nvarchar(12),ClassId int)
    create table classTab(ClassId int ,Class nvarchar(12))insert into teacherTab select '4','lying','4'
    union all
    select '2','李四','2'
    union all
    select '3','王五','3'insert into classTab select '4','物理'
    union all
    select '2','数学'
    union all
    select '3','英语'
    union all
    select '4','物理'declare @s varchar(8000)
    set @s=''
    select @s=@s+',max(case rtrim(classID)  when '''+rtrim(classID)+''' then ''√'' else ''×'' end) '+class
    from  ClassTab
    group by class,classId
    order by classIdprint @s
    exec('select max(Teacher) as '' '' '+@s+ ' from TeacherTab group by TeacherID')
      

  3.   

    Declare @SQL varchar(8000)Set @SQL =
    'Select 
    TeacherID
    ,Teacher'Select @SQL = @SQL + '
    ,(Case classID When ' + Cast(classID As varchar) + 
    'Then ''√'' Else ''×'' End) As ' + class
    From csSet @SQL = @SQL + 
    '
    From
    T
    Group By
    TeacherID,Teacher,classID'
    Exec(@SQL)