`
bada130
  • 浏览: 39305 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[T-SQL] PIVOT用法

阅读更多
-- 会员表
CREATE TABLE T_MEMBER (
	MEMBER_ID CHAR(02) PRIMARY KEY,
	MEMBER_NAME VARCHAR(20)
)
-- 商品表
CREATE TABLE T_PRODUCT (
	PRODUCT_ID CHAR(02) PRIMARY KEY,
	PRODUCT_NAME VARCHAR(20)
)
-- 订单表
CREATE TABLE T_ORDER (
	ORDER_ID INT PRIMARY KEY,
	MEMBER_ID CHAR(02),
	PRODUCT_ID CHAR(02),
	QTY INT
)

-- 插入会员信息
INSERT INTO T_MEMBER VALUES ('M1', '张一')
INSERT INTO T_MEMBER VALUES ('M2', '张二')
INSERT INTO T_MEMBER VALUES ('M3', '张三')
INSERT INTO T_MEMBER VALUES ('M4', '张四')
INSERT INTO T_MEMBER VALUES ('M5', '张五')

-- 插入商品信息
INSERT INTO T_PRODUCT VALUES ('P1', '自行车')
INSERT INTO T_PRODUCT VALUES ('P2', '相机')
INSERT INTO T_PRODUCT VALUES ('P3', '笔记本')

-- 插入订单信息
INSERT INTO T_ORDER VALUES (1, 'M1', 'P1', 1)
INSERT INTO T_ORDER VALUES (2, 'M2', 'P2', 2)
INSERT INTO T_ORDER VALUES (3, 'M3', 'P1', 1)
INSERT INTO T_ORDER VALUES (4, 'M3', 'P1', 1)
INSERT INTO T_ORDER VALUES (5, 'M2', 'P3', 1)
INSERT INTO T_ORDER VALUES (6, 'M1', 'P2', 3)
INSERT INTO T_ORDER VALUES (7, 'M3', 'P1', 1)
INSERT INTO T_ORDER VALUES (8, 'M1', 'P1', 2)
INSERT INTO T_ORDER VALUES (9, 'M2', 'P3', 1)
INSERT INTO T_ORDER VALUES (10, 'M1', 'P2', 1)
GO

-- 会员 + 商品 统计
SELECT T2.MEMBER_NAME 会员名称, T3.PRODUCT_NAME 商品名称, SUM(T1.QTY) 数量 
  FROM T_ORDER T1 INNER JOIN T_MEMBER T2 ON T1.MEMBER_ID = T2.MEMBER_ID
                  INNER JOIN T_PRODUCT T3 ON T1.PRODUCT_ID = T3.PRODUCT_ID
GROUP BY T2.MEMBER_NAME, T3.PRODUCT_NAME
       
-- 会员 + 商品种类(行转列) 统计      
-- 商品名称字段中的值转换成字段名称
SELECT * 
  FROM (
	SELECT T2.MEMBER_NAME 会员名称, T3.PRODUCT_NAME 商品名称, SUM(T1.QTY) 数量 
          FROM T_ORDER T1 INNER JOIN T_MEMBER T2 ON T1.MEMBER_ID = T2.MEMBER_ID
                          INNER JOIN T_PRODUCT T3 ON T1.PRODUCT_ID = T3.PRODUCT_ID
      GROUP BY T2.MEMBER_NAME, T3.PRODUCT_NAME) T
PIVOT (SUM(数量) FOR 商品名称 IN([笔记本], [相机], [自行车])) AS PVT

 

  • 大小: 2.7 KB
  • 大小: 2.6 KB
分享到:
评论

相关推荐

    Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询.part1

    本书首先会介绍T-SQL的基础概念,包括SELECT语句的基本用法,如何从一个或多个表中检索数据,以及如何使用WHERE子句过滤结果。接下来,会深入探讨更高级的查询技巧,如联接(JOIN)操作,用于合并来自不同表的数据;...

    Inside Microsoft SQL Server 2008 - T-SQL Querying

    T-SQL(Transact-SQL)是Microsoft SQL Server使用的SQL方言,它扩展了标准SQL的功能,为数据库操作提供了更多的灵活性和控制能力。本书第一章介绍了T-SQL的基础概念,包括数据类型、变量、流程控制语句等内容。通过...

    t-sql权威指南电子书pdf版下载

    这些基本操作是T-SQL的基石,理解它们的用法和组合是每个数据库开发者的必修课。 2. **聚合函数与分组**:GROUP BY和HAVING子句用于数据汇总,COUNT、SUM、AVG、MIN和MAX等聚合函数则用于计算统计信息。 3. **联接...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(英文版)

    - **数据聚合**:掌握GROUP BY、HAVING子句以及聚合函数如SUM()、AVG()等的使用方法。 - **透视转换**:了解如何使用PIVOT和UNPIVOT操作对数据进行转换,实现灵活的数据展示需求。 - **TOP和APPLY操作**:通过...

    T-SQL 增强功能

    10. **变量和动态SQL**:T-SQL支持声明和使用变量,以及构建和执行动态SQL,这在处理不确定的或运行时决定的查询结构时非常有用。 11. **XML和JSON支持**:SQL Server支持直接处理XML和JSON数据,提供了解析、查询...

    T-SQl查询总结.doc

    T-SQL提供了处理集合的方法,如FOR XML、PIVOT和UNPIVOT等,使得数据转换更为灵活。 1.2 委托、事件(自定义事件) 在.NET Framework中,委托允许你将方法作为参数传递,而事件则是对象间通信的一种方式。SQL ...

    T-SQL参考.pdf

    本文将详细解析如何使用T-SQL进行行转列操作,以及涉及的相关知识点。 首先,我们创建了一个名为`DB`的数据库,然后创建了两个表格:`Scores`和`Student`。`Scores`表格存储学生的科目成绩,包含`ID`(自增标识)、`...

    T-SQL_经典行专列、列转行_分页及存储过程

    ### T-SQL经典编程之行转列与列转行技巧详解 #### 一、T-SQL 行转列 ...以上就是T-SQL中行转列和列转行的具体实现方法。这些方法不仅可以帮助我们更好地组织和展示数据,而且对于复杂的数据分析和报告也非常重要。

    ms-sqlserver面试题

    在IT行业中,数据库管理是至关重要的,而Microsoft SQL Server(简称MS SQL Server)作为一款广泛使用的商业关系数据库管理系统,其专业性与复杂性都要求技术人员具备扎实的理论基础和实践经验。针对“ms-sqlserver...

    TSQLFundamentals Code.zip

    T-SQL中的联接操作是将两个或多个表的数据合并在一起的关键方法,包括内连接、外连接和交叉连接。"Chapter 03 - Joins - Solutions.sql"展示了如何使用JOIN子句将不同表中的数据关联,以便进行更复杂的分析和报告。...

    Microsoft SQL Server 2008技术内幕

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威书籍。T-SQL是SQL Server的主要编程语言,用于执行数据操作、管理数据库以及创建复杂的存储过程...

    SQL Server “Yukon”中又新又酷的特性.pdf

    通过PIVOT操作,T-SQL不再需要编写复杂的动态SQL语句,而是可以直接利用PIVOT语法来实现相同的结果,提高了编写查询的便捷性和可读性。 5. 通用表表达式(CTE)是“Yukon”中引入的新特性之一,它类似于临时表,但...

    SQL Server 工具教程(最值得下载,实用)

    《SQL Server工具教程》是一份全面且实用的学习资料,它涵盖...通过《SQL Server工具教程》,读者将能够深入理解这些工具的使用方法,提升数据库管理、开发和分析能力,从而更好地驾驭SQL Server这个强大的数据库系统。

    sql2005培训资料

    `建立分页Table.sql`, `2005分页.sql`可能讲解了SQL Server 2005中实现数据分页的新方法。在大型数据集上,分页查询可以提高性能并提供更好的用户体验。SQL Server 2005引入了ROW_NUMBER()函数,配合TOP和...

    深入SQL中PIVOT 行列转换详解

    在T-SQL(Microsoft SQL Server的查询语言)中,PIVOT是通过一种特殊的语法实现的。例如,如果我们有一个销售数据表,记录了每个季度的销售额,我们可以使用PIVOT将季度字段的值转换为列,这样每个年度对应的四个...

    SQL Server行转列使用

    T-SQL(Transact-SQL)是微软SQL Server所使用的扩展SQL语言,它提供了丰富的数据处理功能,包括行转列。在SQL Server中,有两种主要的方法可以实现这一转换: 1. 使用CASE语句: CASE语句是SQL中一个非常强大的...

    sql server通过pivot对数据进行行列转换的方法

    本篇将详细讲解如何使用Pivot功能对数据进行行列转换,并通过实例代码展示其具体用法。 首先,我们需要理解Pivot的基本概念。在SQL Server中,Pivot操作是Transact-SQL的一个特性,它允许我们将一个表中的值从行...

    sql server 2012 数据库技术及应用第四版

    5. **Transact-SQL (T-SQL)**:深入学习T-SQL语法,包括SELECT语句的高级用法、INSERT、UPDATE、DELETE语句,以及存储过程、触发器和事务的使用。 6. **视图与查询优化**:掌握如何创建和使用视图来简化数据访问,...

    Transact—SQL在SQL Server 2005中的增强功能.pdf

    除此之外,SQL Server 2005还增强了CTE(公用表表达式)功能,允许使用PIVOT和UNPIVOT运算符,这进一步提升了查询的灵活性和表达能力。CTE提供了一种方式,让开发者能够临时命名一个结果集,并且在查询中引用它。...

Global site tag (gtag.js) - Google Analytics