一小题,在线等!100分 散

manlian3 2005-03-10 10:50:00
id name subject grade
1 张三 语文 1
2 李四 数学 2
3 王五 英语 1
4 张三 数学 2
5 李四 语文 1
6 张三 英语 2
7 王五 语文 1
在SQL查询服务器上用SQL语言编写代码使的查询结果为:

姓名 数学 英语 语文 总分
张三 2 0 1 3
李四 2 0 1 3
王五 0 1 1 2

...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2005-03-10
  • 打赏
  • 举报
回复
subject固定的前提下,可以用如下非动态SQL实现:
------------------------------------------------------------------
select
姓名 = name,
语文 = isnull(max(case subject when '语文' then grade end),0),
数学 = isnull(max(case subject when '数学' then grade end),0),
英语 = isnull(max(case subject when '英语' then grade end),0),
总分 = sum(grade)
from

group by
name
Softlee81307 2005-03-10
  • 打赏
  • 举报
回复
Create Table CC(id int,name varchar(10),subject varchar(10),grade int)
insert into CC
Select 1,'張三', '語文', 1 union all
Select 2,'李四', '數學', 2 union all
Select 3,'王五', '英語', 1 union all
Select 4,'張三', '數學', 2 union all
Select 5,'李四', '語文', 1 union all
Select 6,'張三', '英語', 2 union all
Select 7,'王五', '語文', 1
-------------------------------------------------------------
Declare @s varchar(2000)
set @s=''
select @s=@s+','+subject+'=isnull((select grade from CC where name=a.name and subject='''+subject+'''),0)' from CC group by SUBJECT
set @s='Select name'+@s+',total=sum(grade) from CC a group by Name'
exec(@s)
--------------結果-------------------
王五 1 1 0 2
李四 0 1 2 3
張三 2 1 2 5
xluzhong 2005-03-10
  • 打赏
  • 举报
回复
行列转换,FAQ里很多类似的例子
pbsql 2005-03-10
  • 打赏
  • 举报
回复
这就是SQL,当然一个SQL是实现不了的
manlian3 2005-03-10
  • 打赏
  • 举报
回复
风云,能不能只用SQL写一下?
debye 2005-03-10
  • 打赏
  • 举报
回复
嗯,这个问题以前有好多人问过了,你自己去找找吧
就是列转行嘛
NinGoo 2005-03-10
  • 打赏
  • 举报
回复
行列转换,FAQ里很多类似的例子
xxdyy 2005-03-10
  • 打赏
  • 举报
回复
我也来学学!
pbsql 2005-03-10
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case subject when '''+subject+''' then grade else 0 end) ['+subject+']'
from t group by subject
exec('select 姓名=name'+@sql+',总分=sum(grade) from t group by name order by name')
kinglh 2005-03-10
  • 打赏
  • 举报
回复
先占个位学习

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧