首页 > 代码库 > 横表、纵表转换
横表、纵表转换
1.纵表转换为横表
纵表SQL
CREATE TABLE [dbo].[TableA]( [Name] [nvarchar](10) NOT NULL, [Course] [nvarchar](50) NOT NULL, [Grade] [int] NOT NULL)INSERT [dbo].[TableA] ([Name], [Course], [Grade]) VALUES (N‘张三‘, N‘语文‘, 75)INSERT [dbo].[TableA] ([Name], [Course], [Grade]) VALUES (N‘张三‘, N‘数学‘, 80)INSERT [dbo].[TableA] ([Name], [Course], [Grade]) VALUES (N‘张三‘, N‘英语‘, 90)INSERT [dbo].[TableA] ([Name], [Course], [Grade]) VALUES (N‘李四‘, N‘语文‘, 95)INSERT [dbo].[TableA] ([Name], [Course], [Grade]) VALUES (N‘李四‘, N‘数学‘, 55)
转换SQL
select Name, SUM(case Course when ‘语文‘ then Grade else 0 end) as 语文, SUM(case Course when ‘数学‘ then Grade else 0 end) as 数学, SUM(case Course when ‘英语‘ then Grade else 0 end) as 英语from TableAgroup by Name
转换结果
2.横表转换为纵表
横表SQL
create table Table_B( ID int identity(1,1) primary key, 姓名 varchar(20), 语文 int, 数学 int, 英语 int)insert into Table_B(姓名,语文,数学,英语) values(‘张三‘,60,70,80)insert into Table_B(姓名,语文,数学,英语) values(‘李四‘,90,100,45)insert into Table_B(姓名,语文,数学,英语) values(‘王五‘,15,26,37)
转换SQL
select 姓名, ‘语文‘ as 科目, 语文 as 成绩from Table_B union allselect 姓名, ‘数学‘ as 科目, 数学 as 成绩from Table_B union allselect 姓名, ‘英语‘ as 科目, 英语 as 成绩from Table_B order by 姓名,科目
转换结果
横表、纵表转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。