本文分享了两个有关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 */ |
以上就是本文的全部内容,希望对大家的学习有所帮助。