MSSQL纵列转横列

2015-11-21 01:33:36 · 作者: · 浏览: 2
?
上篇我们说到了横列转纵列,下面就来说下纵列转横列
?
1.建表
?
?
CREATE TABLE [dbo].[EndLongChangeAcross](
 [Id] [INT] IDENTITY(1,1) NOT NULL,
 [Name] [NVARCHAR](50) NOT NULL,
 [Chinese] [INT] NOT NULL,
 [English] [INT] NOT NULL,
 [Math] [INT] NOT NULL,
 CONSTRAINT [PK_EndLongChangeAcross] PRIMARY KEY CLUSTERED 
(
 [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[EndLongChangeAcross] ADD  CONSTRAINT [DF_EndLongChangeAcross_Chinese]  DEFAULT ((0)) FOR [Chinese]
GO

ALTER TABLE [dbo].[EndLongChangeAcross] ADD  CONSTRAINT [DF_EndLongChangeAcross_English]  DEFAULT ((0)) FOR [English]
GO

ALTER TABLE [dbo].[EndLongChangeAcross] ADD  CONSTRAINT [DF_EndLongChangeAcross_Math]  DEFAULT ((0)) FOR [Math]
GO

?

2.具体SQL
?
SELECT  Name ,
  '语文' AS 'Subject',
  Chinese AS 'Score'
FROM dbo.EndLongChangeAcross
UNION ALL
SELECT  Name ,
  '英语',
  English AS 'Score'
FROM dbo.EndLongChangeAcross
UNION ALL
SELECT  Name ,
  '数学' ,
  Math AS 'Score'
FROM dbo.EndLongChangeAcross
ORDER BY Name DESC

?

?
具体效果: