CREATE TABLE [dbo].[Chengji](
[Name] nvarchar(20) NOT NULL,
[Kemu] nvarchar(20) NOT NULL,
[Fenhu] [int] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Chengji] ADD DEFAULT ((0)) FOR [Fenhu]
GO
INSERT [dbo].[Chengji] ([Name], [Kemu], [Fenhu]) VALUES ('张三','语文',80)
GO
INSERT [dbo].[Chengji] ([Name], [Kemu], [Fenhu]) VALUES ('张三','数学',60)
GO
INSERT [dbo].[Chengji] ([Name], [Kemu], [Fenhu]) VALUES ('张三','英语',99)
GO
INSERT [dbo].[Chengji] ([Name], [Kemu], [Fenhu]) VALUES ('李四','语文',80)
GO
INSERT [dbo].[Chengji] ([Name], [Kemu], [Fenhu]) VALUES ('李四','数学',80)
GO
INSERT [dbo].[Chengji] ([Name], [Kemu], [Fenhu]) VALUES ('李四','英语',80)
GO
--1.行转列
--方法一:
select name,
sum(case kemu when '语文' then Fenhu else 0 end) '语文',
sum(case kemu when '数学' then Fenhu else 0 end) '数学',
sum(case kemu when '英语' then Fenhu else 0 end) '英语'
from
Chengji
group by Name
--方法二:
select * from Chengji
pivot (sum(fenhu) for kemu in ([语文],[数学],[英语])) as t
--2.列转行
--创建成绩2表
select * into Chengji2 from (
select * from Chengji
pivot (sum(fenhu) for kemu in ([语文],[数学],[英语])) as t
) t
--方法一:
select name,'语文' 科目,语文 '成绩' from Chengji2 union all
select name,'数学' 科目,数学 '成绩' from Chengji2 union all
select name,'英语' 科目,英语 '成绩' from Chengji2
order by name,科目
--方法二:
select * from Chengji2 UNPIVOT([fenshu] for [成绩] in ([语文],[数学],[英语])) as T