求一简单的横纵转换SQL

aawwmate 2009-06-13 12:43:32
现在有表 类似如下吧,我没有把数据打完整

学校 听平均分 听得分率 说平均分 说得分率 读平均分 读得分率
学校A 21.27 30.01% 3.07 26.88
学校B 21.44 2.84 26.15
学校C 20.43 3.09 26.31
...

求结果

学校A 听平均分 说平均分 读平均分
学校A 听得分率 说得分率 读得分率
学校B 听平均分 ....

...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2009-06-13
  • 打赏
  • 举报
回复
-- Test Data: ta
If object_id('ta') is not null
Drop table ta
Go
Create table ta(学校 nvarchar(3),听平均分 numeric(4,2),听得分率 numeric(4,2),说平均分 numeric(3,2),说得分率 int,读平均分 numeric(4,2),读得分率 int)
Go
Insert into ta
select '学校A',21.27,30.01,3.07,55,26.88,65 union all
select '学校B',21.44,30.01,2.84,55,26.15,77 union all
select '学校C',20.43,22,3.09,45,26.31,12
Go
--Start
Select 学校,'平均分' as 项目,
'听' = 听平均分,'说 '=说平均分,'读'=读平均分
from ta
union all

Select 学校,'得分率' as 项目,
'听' = 听得分率,'说 '=说得分率,'读'=读得分率
from ta
order by 1


--Result:
/*
(所影响的行数为 3 行)

学校 项目 听 说 读
---- ------ ------ -------------- --------------
学校A 平均分 21.27 3.07 26.88
学校A 得分率 30.01 55.00 65.00
学校B 得分率 30.01 55.00 77.00
学校B 平均分 21.44 2.84 26.15
学校C 平均分 20.43 3.09 26.31
学校C 得分率 22.00 45.00 12.00

(所影响的行数为 6 行)


*/
--End
itsong 2009-06-13
  • 打赏
  • 举报
回复
数据库里做这个应该挺麻烦的,在报表输出这一块来做横纵的转换吧。
aawwmate 2009-06-13
  • 打赏
  • 举报
回复
上面可能没有写清楚
求结果表

学校 项目 听 说 读 写
学校A 平均分
学校A 得分率
学校B .....
JonasFeng 2009-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 happyflystone 的回复:]
SQL code-- Test Data: ta
If object_id('ta') is not null
Drop table ta
Go
Create table ta(学校 nvarchar(3),听平均分 numeric(4,2),听得分率 numeric(4,2),说平均分 numeric(3,2),说得分率 int,读平均分 numeric(4,2),读得分率 int)
Go
Insert into ta
select '学校A',21.27,30.01,3.07,55,26.88,65 union all
select '学校B',21.44,30.01,2.84,55,26.15,77 union all
select '学校C',20.43,22,3.09,45,26…
[/Quote]
UP
ChinaITOldMan 2009-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 happyflystone 的回复:]
SQL code-- Test Data: ta
If object_id('ta') is not null
Drop table ta
Go
Create table ta(学校 nvarchar(3),听平均分 numeric(4,2),听得分率 numeric(4,2),说平均分 numeric(3,2),说得分率 int,读平均分 numeric(4,2),读得分率 int)
Go
Insert into ta
select '学校A',21.27,30.01,3.07,55,26.88,65 union all
select '学校B',21.44,30.01,2.84,55,26.15,77 union all
select '学校C',20.43,22,3.09,45,26…
[/Quote]

pls refer this one
abcdef406505181 2009-06-13
  • 打赏
  • 举报
回复

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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