本文分享了两个有关SQL查询语句行转列横向显示的示例,供大家参考,具体内容如下
示例1:
在SQL查询语句行转列横向显示中access中没有CASE,要用IIF代替
select iif(sex= '1 ', '男 ', '女 ') from tablename
1
2
3
4
5
|
select country, sum ( case when type= 'A' then money end ) as A,
sum ( case when type= 'B' then money end ) as B,
sum ( case when type= 'C' then money end ) as C
from table1
group by country
|
示例2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/*
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- ---- ----
李四 74 84 94
张三 74 83 93
-------------------
*/
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
--SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)
select 姓名 as 姓名 ,
max ( case 课程 when '语文' then 分数 else 0 end ) 语文,
max ( case 课程 when '数学' then 分数 else 0 end ) 数学,
max ( case 课程 when '物理' then 分数 else 0 end ) 物理
from tb
group by 姓名
--SQL SERVER 2000 动态SQL,指课程不止语文、数学、物理这三门课程。(以下同)
declare @sql varchar (8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ' '' + 课程 + '' ' then 分数 else 0 end) [' + 课程 + ']'
from ( select distinct 课程 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
exec (@sql)
--SQL SERVER 2005 静态SQL。
select * from ( select * from tb) a pivot ( max (分数) for 课程 in (语文,数学,物理)) b
--SQL SERVER 2005 动态SQL。
declare @sql varchar (8000)
select @sql = isnull (@sql + '],[' , '' ) + 课程 from tb group by 课程
set @sql = '[' + @sql + ']'
exec ( 'select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b' )
---------------------------------
/*
问题:在上述结果的基础上加平均分,总分,得到如下结果:
姓名 语文 数学 物理 平均分 总分
---- ---- ---- ---- ------ ----
李四 74 84 94 84.00 252
张三 74 83 93 83.33 250
*/
|
以上就是本文的全部内容,希望对大家的学习有所帮助。