这个查询语句该如何写,请大家多指教
这个查询语句该怎么写,请大家多指教!
假如有个Table1的表中列值如下:
名字 课程 年级 成绩
A 语文 1 75
A 语文 2 80
A 语文 3 83
A 数学 4 87
A 数学 5 90
A 数学 6 93
....
假如我想查询的结果类似如下:
名字 1年语文的成绩 3年语文的成绩 5年数学的成绩 6年数学的成绩
A 75 83 90 93
SQL语句我该怎么写?本人是新手刚学习,请大家多指教,谢谢!
------解决方案--------------------
select 名字,
[1年语文的成绩]=max(case when [年级]='1' then [成绩] else 0 end),
[3年语文的成绩]=max(case when [年级]='3' then [成绩] else 0 end),
[5年数学的成绩]=max(case when [年级]='5' then [成绩] else 0 end),
[5年数学的成绩]=max(case when [年级]='6' then [成绩] else 0 end)
from
tb group by 名字,课程
------解决方案--------------------
行列转换:
假如有个Table1的表中列值如下:
名字 课程 年级 成绩
A 语文 1 75
A 语文 2 80
A 语文 3 83
A 数学 4 87
A 数学 5 90
A 数学 6 93
....
假如我想查询的结果类似如下:
名字 1年语文的成绩 3年语文的成绩 5年数学的成绩 6年数学的成绩
A 75 83 90 93
SQL语句我该怎么写?本人是新手刚学习,请大家多指教,谢谢!
sql
------解决方案--------------------
select 名字,
[1年语文的成绩]=max(case when [年级]='1' then [成绩] else 0 end),
[3年语文的成绩]=max(case when [年级]='3' then [成绩] else 0 end),
[5年数学的成绩]=max(case when [年级]='5' then [成绩] else 0 end),
[5年数学的成绩]=max(case when [年级]='6' then [成绩] else 0 end)
from
tb group by 名字,课程
------解决方案--------------------
行列转换:
create table ColToRow
(
ID int,
Code varchar(10),
Value int
)
Go
--INSERT
insert ColToRow
select 1,'Item1',1000 union all
select 1,'Item2',1000 union all
select 1,'Item3',500 union all
select 2,'Item1',2000 union all
select 2,'Item2',0 union all
select 3,'Item1',1000 union all
select 3,'Item3',500
GO
--SELECT1
select ID,
sum(case Code when 'Item1' then Value else 0 end) as Item1,
sum(case Code when 'Item2' then Value else 0 end) as Item2,
sum(case Code when 'Item3' then Value else 0 end) as Item3
from ColToRow group by ID