- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
T-SQL 经典编程
说明:本实例是以 SQL Server 2005 为运行环境的。
准备工作:创建一个名为 DB 的数据库(CREATE DATABASE DB)。
一、T-SQL 行转列
1、创建如下表
CREATE TABLE [Scores] (
[ID] INT IDENTITY(1,1), --自增标识
[StuNo] INT, --学号
[Subject] NVARCHAR(30), --科目
[Score] FLOAT --成绩
)
GO
INSERT INTO [Scores]
SELECT 100, 语文, 80 UNION
SELECT 100, 数学, 75 UNION
SELECT 100, 英语, 70 UNION
SELECT 100, 生物, 85 UNION
SELECT 101, 语文, 80 UNION
SELECT 101, 数学, 90 UNION
SELECT 101, 英语, 70 UNION
SELECT 101, 生物, 85
CREATE TABLE [Student] (
[ID] INT IDENTITY(100,1), --自增标识,学号
[StuName] NVARCHAR(30), --姓名
[Sex] NVARCHAR(30), --性别
[Age] CHAR(2) --年龄
)
GO
INSERT INTO [Student]
SELECT 张三, 男, 80 UNION
SELECT 李四, 女, 75通过CASEWHEN 语句GROUP BY…聚合函数 来实现SELECT
StuNo AS 学号,
MAX(CASE Subject WHEN 语文 THEN Score ELSE 0 END) AS 语文,
MAX(CASE Subject WHEN 数学 THEN Score ELSE 0 END) AS 数学,
MAX(CASE Subject WHEN 英语 THEN Score ELSE 0 END) AS 英语,
MAX(CASE Subject WHEN 生物 THEN Score ELSE 0 END) AS 生物,
SUM(Score) AS 总分,
AVG(Score) AS 平均分
FROM dbo.[Scores]
GROUP BY StuNo
ORDER BY StuNo ASCSELECT
MAX(StuNo) AS 学号,
StuName AS 姓名,
MAX(CASE Subject WHEN 语文 THEN Score ELSE 0 END) AS 语文,
MAX(CASE Subject WHEN 数学 THEN Score ELSE 0 END) AS 数学,
MAX(CASE Subject WHEN 英语 THEN Score ELSE 0 END) AS 英语,
MAX(CASE Subject WHEN 生物 THEN Score ELSE 0 END) AS 生物,
SUM(Score) AS 总分,
AVG(Score) AS 平均分
FROM dbo.[Scores] A join [Student] B on (A.StuNo=B.ID)
GROUP BY StuName
ORDER BY StuName ASC
SELECT
StuNo AS 学号,
StuName AS 姓名,
AVG(语文) AS 语文,
AVG(数学) AS 数学,
AVG(英语) AS 英语,
AVG(生物) AS 生物
FROM [Scores]
PIVOT(
AVG(Score) FOR Subject IN
(语文,数学,英语,生物)
) AS NewScores
JOIN [Student] ON (NewScores.StuNo=Student.ID)
GROUP BY NewScores.StuNo,StuName
ORDER BY StuName ASC
结果如下图:
二、T-SQL列转行
1、创建数据表并插入 4 条数据
CREATE TABLE [StudentScores] (
[ID] INT IDENTITY(1,1), --自增标识
[StuNo] INT, --学号
[Chinese] NVARCHAR(30), --语文
[Mathematics] NVARCHAR(30),--数学
您可能关注的文档
- solidworks2007破解安装方法.doc
- solidworks2014安装过程图文详解.doc
- SolidWorks工程图转DWG格式图纸的映射方法.doc
- Sorrysorry中韩文歌词.doc
- SPA葡萄球菌A蛋白.doc
- SPM-2型变电设备在线监测系统验收卡.doc
- spss数分大作业--北交大.doc
- SQE高级工程师职位说明书.doc
- SQLSERVER如何配置内存提高性能配置方案.doc
- SQL数据库对象命名详细文档.doc
- 2024-2025学年初中信息技术(信息科技)七年级下册川教版(2019)教学设计合集.docx
- 2024-2025学年高中思想政治高一下学期沪教版教学设计合集.docx
- 2024-2025学年高中地理必修1人教版教学设计合集.docx
- 2024-2025学年小学美术四年级下册赣美版(2024)教学设计合集.docx
- 2024-2025学年小学音乐五年级上册花城版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)第七册电子工业版(2022)教学设计合集.docx
- 2024-2025学年高中物理选择性必修 第二册人教版(2019)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级上册(2020)闽教版(2020)教学设计合集.docx
- 2024-2025学年高中信息技术(信息科技)必修2 信息系统与社会浙教版(2019)教学设计合集.docx
- 2024-2025学年高中化学必修 第二册苏教版(2019)教学设计合集.docx
文档评论(0)