昨天在群里一位网友抛出这样的问题:
name 语文 数学 英语 张三 75 90 85 李四 80 85 85 获得表,查询每个 name 成绩最高的学科, 若有相同,并列 name 成绩 科目 张三 90 数学 李四 85 数学,英语
我的方案:
CREATE TABLE [dbo].[ChengJi2]( [姓名] [nchar](10) NULL, [成绩] [int] NULL, [科目] nchar(100) NULL, ) ON [PRIMARY] ------------------------------------- Create Function [dbo].[Getkemu]( @姓名 char(10)=null) returns varchar(8000) as begin declare @r varchar(8000) set @r= ' ' select @r=@r+ ', '+ rtrim(CAST (科目 as varchar)) from ChengJi2 where 姓名=@姓名 return stuff(@r,1,2, ' ') end ------------------------------------ Insert into ChengJi2(姓名,成绩,科目) SELECT B.* FROM ( select 姓名,MAX (成绩) 成绩 from( SELECT 姓名, 语文 as 成绩,'语文' 科目 FROM ChengJi union all SEL