行列转换问题

MrYangkang 2013-04-24 05:40:19
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
insert into tb values('张三','语文',74)
insert into tb values('张三','数学',83)
insert into tb values('张三','物理',93)
insert into tb values('李四','语文',74)
insert into tb values('李四','数学',84)
insert into tb values('李四','物理',94)
go
select * from tb
go

select m.*,n.总分,n.平均分
from
(
select * from tb pivot(max(分数)for 课程in(语文,数学,物理))a
)m,
(
select姓名,sum(分数)总分,cast(avg(分数*1.0)as decimal(18,2))平均分
from tb group by姓名
)n where m.姓名=n.姓名
--sql server 2005 执行会报错,报错提示
消息 102,级别 15,状态 1,第 6 行
'(' 附近有语法错误。
,这是什么情况
...全文
83 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrYangkang 2013-04-25
  • 打赏
  • 举报
回复
引用 9 楼 qujunchang 的回复:
引用 楼主 ZaoLianBuXiQi 的回复: create table tb(姓名 varchar(10),课程 varchar(10),分数 int) insert into tb values('张三','语文',74) insert into tb values('张三','数学',83) insert into tb values('张三','物理',93) insert i……
但是我的执行会报错呀,所以我才问数据库要不要配置哪
MrYangkang 2013-04-25
  • 打赏
  • 举报
回复
引用 10 楼 qujunchang 的回复:
引用 楼主 ZaoLianBuXiQi 的回复: create table tb(姓名 varchar(10),课程 varchar(10),分数 int) insert into tb values('张三','语文',74) insert into tb values('张三','数学',83) insert into tb values('张三','物理',93) insert i……
你这样可以用,但是我还是想知道为什么 select * from tb pivot(max(分数)for 课程 in(语文,数学,物理))a 执行会报错 需要哪里配种下环境吗?
曲军昌 2013-04-25
  • 打赏
  • 举报
回复
引用 楼主 ZaoLianBuXiQi 的回复:
create table tb(姓名 varchar(10),课程 varchar(10),分数 int) insert into tb values('张三','语文',74) insert into tb values('张三','数学',83) insert into tb values('张三','物理',93) insert into tb values……
select 姓名,
       sum(case 课程 when '语文'  then 分数 else 0 end) as 语文,
	   sum(case 课程 when '数学'  then 分数 else 0 end) as 数学,
	   sum(case 课程 when '物理'  then 分数 else 0 end) as 物理,
	   cast(sum(分数)as decimal(18,2))as 总分,
	   cast(AVG(分数)as decimal(18,2))as 平均分
from tb
group by 姓名
你用这种写法。。。。
曲军昌 2013-04-25
  • 打赏
  • 举报
回复
引用 楼主 ZaoLianBuXiQi 的回复:
create table tb(姓名 varchar(10),课程 varchar(10),分数 int) insert into tb values('张三','语文',74) insert into tb values('张三','数学',83) insert into tb values('张三','物理',93) insert into tb values……
在我的环境上完全没有问题。
MrYangkang 2013-04-24
  • 打赏
  • 举报
回复
引用 6 楼 littlerebeka 的回复:
这一句单独执行也正确啊 select * from tb pivot(max(分数)for 课程 in(语文,数学,物理))a
不行,还是报错 消息 102,级别 15,状态 1,第 1 行 '(' 附近有语法错误。
不重复的小可 2013-04-24
  • 打赏
  • 举报
回复
你把我的语句复制一下试试
不重复的小可 2013-04-24
  • 打赏
  • 举报
回复
这一句单独执行也正确啊 select * from tb pivot(max(分数)for 课程 in(语文,数学,物理))a
MrYangkang 2013-04-24
  • 打赏
  • 举报
回复
我执行这段都报错
引用 1 楼 littlerebeka 的回复:
select m.*,n.总分,n.平均分
from
( select * from tb pivot(max(分数)for 课程 in(语文,数学,物理))a
)m,
(select 姓名,sum(分数)总分,cast(avg(分数*1.0)as decimal(18,2))平均分
from tb group by 姓名
)n
where m.姓名=n.姓名
验证没有错误,估……
MrYangkang 2013-04-24
  • 打赏
  • 举报
回复
是不是我数据库环境问题
引用 2 楼 qujunchang 的回复:
SQL code
?



123456789101112131415161718192021222324252627

create table tb(姓名 varchar(10),课程 varchar(10),分数 int) insert into tb values('张三','语文',74) insert into tb values('张三','数学',83) ins……
MrYangkang 2013-04-24
  • 打赏
  • 举报
回复
是不是 我数据库环境问题,或者是哪里没有设置
曲军昌 2013-04-24
  • 打赏
  • 举报
回复
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
 insert into tb values('张三','语文',74)
 insert into tb values('张三','数学',83)
 insert into tb values('张三','物理',93)
 insert into tb values('李四','语文',74)
 insert into tb values('李四','数学',84)
 insert into tb values('李四','物理',94)
 go
 select * from tb
 go

select m.*,n.总分,n.平均分
from
 (
		select * from tb pivot(max(分数)for 课程 in(语文,数学,物理))a
 )m,
 (
 select 姓名,sum(分数)总分,cast(avg(分数*1.0)as decimal(18,2))平均分
from tb group by 姓名
)n where m.姓名=n.姓名

姓名         语文          数学          物理          总分          平均分
---------- ----------- ----------- ----------- ----------- ---------------------------------------
李四         74          84          94          252         84.00
张三         74          83          93          250         83.33

(2 行受影响)
不重复的小可 2013-04-24
  • 打赏
  • 举报
回复
select m.*,n.总分,n.平均分 from ( select * from tb pivot(max(分数)for 课程 in(语文,数学,物理))a )m, (select 姓名,sum(分数)总分,cast(avg(分数*1.0)as decimal(18,2))平均分 from tb group by 姓名 )n where m.姓名=n.姓名 验证没有错误,估计少空格了

34,594

社区成员

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

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