22,210
社区成员
发帖
与我相关
我的任务
分享
DECLARE @sql VARCHAR(MAX)
SET @sql = 'select 姓名'
SELECT @sql = @sql + ',max(case 科目 when ''' + 科目
+ ''' then 1 else 0 end)[' + 科目 + ']'
FROM ( SELECT DISTINCT
科目
FROM #T
) a
SET @sql = @sql
+ ' from #T group by 姓名'
EXEC('insert into 表名 '+@sql)
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([姓名] nvarchar(21),[科目] nvarchar(22))
Insert #T
select N'甲',N'美术' union all
select N'乙',N'音乐' union all
select N'丙',N'体育' union all
select N'丁',N'科学' union all
select N'甲',N'音乐' union all
select N'丙',N'科学' union all
select N'乙',N'体育'
Go
--测试数据结束
DECLARE @sql VARCHAR(MAX)
SET @sql = 'select 姓名'
SELECT @sql = @sql + ',max(case 科目 when ''' + 科目
+ ''' then 1 else 0 end)[' + 科目 + ']'
FROM ( SELECT DISTINCT
科目
FROM #T
) a
SET @sql = @sql
+ ' from #T group by 姓名'
EXEC(@sql)