一道合并成绩最高科目的解决方法
来源:未知 责任编辑:责任编辑 发表时间:2014-01-20 07:54 点击:次
昨天在群里一位网友抛出这样的问题:
name 语文 数学 英语
张三 75 90 85
李四 80 85 85
获得表,查询每个 name 成绩最高的学科, 若有相同,并列
name 成绩 科目
张三 90 数学
李四 85 数学,英语
我的方案:
[sql]
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
SELECT 姓名, 数学 as 成绩,'数学' 科目
FROM ChengJi
union all
SELECT 姓名, 英语 as 成绩,'英语' 科目
FROM ChengJi ) T
group by 姓名) A INNER JOIN
(
select 姓名,MAX (成绩) 成绩,科目 from(
SELECT 姓名, 语文 as 成绩,'语文' 科目
FROM ChengJi
union all
SELECT 姓名, 数学 as 成绩,'数学' 科目
FROM ChengJi
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>