急 高手快来帮下我啊

gameover200 2006-04-11 04:20:42
如:
表A 字段 A B
1 10
1 12
2 12
2 15
3 11
3 16
表B 字段 A B
1 数学
2 语文
3 英语
要求算没科的平均值,输出效果如下:
字段 数学 语文 英语
11 13.5 13.5
...全文
209 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gameover200 2006-04-12
  • 打赏
  • 举报
回复
在顶下
gameover200 2006-04-12
  • 打赏
  • 举报
回复
在顶下 高手快来啊
liangpei2008 2006-04-12
  • 打赏
  • 举报
回复
create table a (A int,B decimal)
insert into a
select 1,10
union all
select 1,12
union all
select 2,12
union all
select 2,15
union all
select 3,11
union all
select 3,16

create table b (A int,b varchar(10))
insert into b
select 1,'数学'
union all
select 2,'语文'
union all
select 3,'英语'
go
select '数学'=sum(case 科目 when '数学' then 成绩 else 0 end),'语文'=sum(case 科目 when '语文' then 成绩 else 0 end),
'英语'=sum(case 科目 when '英语' then 成绩 else 0 end)
from
(
select bb.b as '科目',aa.成绩 from b bb,
(select a.A,avg(a.B) as '成绩' from a
group by A) aa
where bb.A=aa.A

) cc
为无味 2006-04-11
  • 打赏
  • 举报
回复
declare @t table(A int,B float)
insert into @t select 1,10
union all select 1 ,12
union all select 2 ,12
union all select 2 ,15
union all select 3 ,11
union all select 3 ,16

declare @a table(A int,B varchar(10))
insert into @a select 1 , '数学'
union all select 2 , '语文'
union all select 3 , '英语'
select avg(t.B) AS G,a.B from @a a
left join @t t on a.A = t.A
GROUP BY a.B
gameover200 2006-04-11
  • 打赏
  • 举报
回复
自己在顶下
gameover200 2006-04-11
  • 打赏
  • 举报
回复
主要是A='+cast(A as nvarchar(10))
和 as '''+B+'''' from 表B
我不太明白
gameover200 2006-04-11
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',( select avg(B) from 表A where A='+cast(A as nvarchar(10))
+') as '''+B+'''' from 表B
select @sql='select '+stuff(@sql,1,1,'')
exec(@sql )
那位大虾能给解释下 这句SQL语句啊
sxdoujg 2006-04-11
  • 打赏
  • 举报
回复
select (select avg(b) from a as aa where aa.a = a.a and b.b='数学') 数学,
(select avg(b) from a as aa where aa.a = a.a and b.b='语文') 语文,
(select avg(b) from a as aa where aa.a = a.a and b.b='英语') 英语
from a
gameover200 2006-04-11
  • 打赏
  • 举报
回复
各位有简单的方法吗??就是看起来 写的没那么复杂
yuweiwei 2006-04-11
  • 打赏
  • 举报
回复

create table AA(A int ,B int)
insert into AA select 1, 10
insert into AA select 1, 12
insert into AA select 2, 12
insert into AA select 2, 15
insert into AA select 3, 11
insert into AA select 3, 16

create table BB (A int,name varchar(20))
insert into BB select 1 , '数学'
insert into BB select 2 , '语文'
insert into BB select 3 , '英语'

declare @sql varchar(1000)
set @sql='select '
select @sql=@sql+'sum(case when tt.name='''+ttt.name +''' then avg else 0 end )as '+ttt.name +',' from
(select name from BB )ttt
set @sql=left(@sql,len(@sql)-1)+' from (select BB.name,tt.avg from (select A,sum(B)/count(*) avg from AA group by A)tt,BB where BB.A=tt.A)tt'
print @sql
exec (@sql)

撸大湿 2006-04-11
  • 打赏
  • 举报
回复
create table 表A(A int ,B float)
insert into 表A
select 1 , 10
union all select 1, 12
union all select 2, 12
union all select 2, 15
union all select 3, 11
union all select 3, 16

create table 表B(A int ,B nvarchar(100))
insert into 表B
select 1, '数学'
union all select 2, '语文'
union all select 3, '英语'

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',( select avg(B) from 表A where A='+cast(A as nvarchar(10))
+') as '''+B+'''' from 表B
select @sql='select '+stuff(@sql,1,1,'')
exec(@sql )
drop table 表A
drop table 表B



结果

数学 语文 英语
11 13.5 13.5
xeqtr1982 2006-04-11
  • 打赏
  • 举报
回复
declare @t table(A int,B dec(5,1))
insert into @t select 1,10
union all select 1 ,12
union all select 2 ,12
union all select 2 ,15
union all select 3 ,11
union all select 3 ,16

declare @a table(A int,B varchar(10))
insert into @a select 1 , '数学'
union all select 2 , '语文'
union all select 3 , '英语'

select a.A as A1,b.a as A2,a.B as B1,b.B as B2 into # from @t a,@a b where a.a=b.a
select distinct [数学]=cast((select avg(B1) from # where B2='数学'group by B2) as dec(5,1)),
[语文]=cast((select avg(B1) from # where B2='语文'group by B2) as dec(5,1)),
[英语]=cast((select avg(B1) from # where B2='英语'group by B2) as dec(5,1))
from #

drop table #
gameover200 2006-04-11
  • 打赏
  • 举报
回复
自己顶下

34,870

社区成员

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

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