标签:
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 TableA group 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 all select 姓名, ‘数学‘ as 科目, 数学 as 成绩 from Table_B union all select 姓名, ‘英语‘ as 科目, 英语 as 成绩 from Table_B order by 姓名,科目
转换结果
标签:
原文地址:http://www.cnblogs.com/zaibinzhang/p/4206008.html