`

浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

阅读更多
SQL语句行列转换的两种方法 case...when和pivot函数应用,运用pivot 函数只支持数据库版本2005以上的。一般运用case when else end 的方法比较多,比较普遍

/*创建数据库*/
 CREATE DATABASE tmp
 go
 USE tmp
 go

/*创建数据库测试表*/
CREATE TABLE [Scores]
     (
       [ID] INT IDENTITY(1, 1)
                PRIMARY KEY ,
       [Student] VARCHAR(20) ,
       [Subject] VARCHAR(30) ,
       [Score] FLOAT
     )

go

TRUNCATE TABLE Scores
 /*插入数据库测试数据信息*/
  INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test001', '语文', '90' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test001', '英语', '85' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'text002', '语文', '90' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'text002', '英语', '80' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test003', '语文', '95' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test003', '英语', '85' )

/*1.  case when .......then else  ....end 用法,行列转换*/
 SELECT  Student AS '姓名' ,
         MAX(CASE Subject
               WHEN '语文' THEN Score
               ELSE 0
             END) AS '语文' ,--如果这个行是“语文”,就选此行作为列
        MAX(CASE Subject
               WHEN '英语' THEN Score
               ELSE 0
             END) AS '英语'
FROM    Scores
 GROUP BY Student
 ORDER BY Student

/*2. pivot(聚合函数(要转成列值的列名)
       for 要转换的列
       in(目标列名)
   )*/
--by www.jbxue.com
SELECT  Student AS '姓名' ,
         AVG(语文) AS '语文' ,
         AVG(英语) AS '英语'
FROM    Scores PIVOT( AVG(Score) FOR Subject IN ( 语文, 英语 ) )as NewScores
 GROUP BY Student
 ORDER BY Student ASC 
分享到:
评论

相关推荐

    浅析SQL语句行列转换的两种方法 case…when与pivot函数的应用

    本文将详细探讨两种实现这一转换的方法:`CASE...WHEN` 和 `PIVOT` 函数,通过具体的示例来解析它们的用法。 1. `CASE...WHEN` 用法 `CASE...WHEN` 语句是一种条件判断语句,常用于在SQL查询中根据特定条件返回不同...

    通过SQL语句实现行列转换的几种方法.rar_oralce_possiblevxh_southernzw8_sql

    在数据库管理中,SQL(Structured Query Language)是用于操作数据的主要工具,其中包括将数据...每种方法都有其优缺点,应根据具体场景灵活应用。在实际工作中,理解并掌握这些技术将极大地提高数据分析的效率和质量。

    SQL语句行列转换(附带数据库、表、视图操作)

    SQL 语句行列转换是数据库管理系统中的一种常见操作,它可以将数据从行转换为列,或者从列转换为行。在这个过程中,需要使用数据库管理语言(Database Management Language,DML)来实现数据的转换。下面我们将详细...

    通过SQL语句实现行列转换的几种方法

    ### 通过SQL语句实现行列转换的几种方法 在日常工作中,我们经常需要处理的数据结构并不总是按照我们期望的方式组织的。特别是在制作自定义报表或进行产品开发时,经常会遇到需要将数据从一种布局转换到另一种布局...

    SQL 2008行列转换的pivot

    #### 知识点一:行列转换(Pivot)的概念与应用场景 在数据库查询中,有时我们需要将数据表中的行转换为列,或者将列转换为行,这种操作被称为行列转换。行列转换在报表、统计分析等场景中非常常见,它可以帮助我们...

    Oracle中SQL语句行列之间相互转换

    ### Oracle中SQL语句行列之间的相互转换 在Oracle数据库中,有时我们需要将表格中的行转换为列或将列转换为行,这种操作被称为行列转换。这种转换对于数据分析、报表制作等场景非常有用。本文将详细介绍Oracle中...

    SQL行列转换 Pivot UnPivot

    SQL 行列转换 Pivot UnPivot SQL 行列转换是指将表格中的行数据转换为列数据,或者将列数据转换为行数据。Pivot 和 UnPivot 是 SQL Server 2005 中引入的两个语法,用于实现行列转换。 Pivot Pivot 语法的主要...

    sql server 行列转换

    在SQL Server中,实现这一功能可以通过多种方式,如使用PIVOT函数、动态SQL等方法。 #### 二、具体示例分析 本次提供的示例是通过动态SQL来实现行列转换的功能。下面我们将详细解析这段代码: 1. **创建测试表**...

    SQLServer行列互转实现思路(聚合函数)

    在SQL Server中,行列互转是一种常见的数据处理需求,它能帮助我们以更直观的方式展示数据。本篇文章将深入探讨如何使用聚合函数Pivot和Unpivot来实现这一目标,特别是针对SQL Server数据库。 首先,让我们了解什么...

    SQL语句普通行列转换.docx

    本文档详细介绍了如何使用SQL Server中的`PIVOT`和`UNPIVOT`函数进行数据的行列转换,包括静态和动态SQL的实现方法。这些技术可以帮助我们在处理复杂的数据展示需求时更加灵活高效。在实际应用中,应根据具体情况...

    oracle sql 行列转换

    在Oracle SQL中,行列转换是一种常见的数据操作需求,主要用于将数据表中的行转换为列,或将列转换为行,以此来满足不同的数据展示或分析需求。这种转换在处理多维度数据、汇总数据或是进行复杂查询时特别有用。下面...

    Oracle SQLServer行列转换

    在SQLServer中,实现行转列的操作有两种主要方法:一种是利用`CASE...WHEN`语句配合`GROUP BY`聚合函数的方式;另一种是通过`PIVOT`操作。 ##### 1. 使用 `CASE...WHEN` 语句与聚合函数实现行转列 这种方法适用于...

    sql试题及答案,sql 行列转换,sql存储过程实例

    2. **CASE语句**:通过CASE表达式,可以根据条件将行转换为列,尤其是在没有Pivot功能的数据库中。 3. **UNION ALL或UNION**:结合多个SELECT语句,将不同列的数据合并成一行。 4. **CROSS APPLY或OUTER APPLY**:在...

    sql查询中行列转换

    本篇文章将详细解释如何通过一条SQL查询语句实现行列转换,并且会针对两种不同的SQL Server版本(SQL Server 2000和SQL Server 2005)来探讨具体的实现方法。 ### 数据准备 首先,我们需要构建一个简单的数据表...

    SQL 数据行列转换

    SQL Server提供了多种方法来实现这一目标,其中包括使用`PIVOT`操作、`CASE`表达式以及本篇文章重点介绍的`FOR XML PATH()`函数。 #### FOR XML PATH() 函数的应用 `FOR XML PATH()`函数是SQL Server提供的一种...

    oracle系列教程三+oracle复杂SQL语句.doc

    本文将深入探讨Oracle中的复杂SQL语句,包括查询优化、索引、函数的使用以及如何进行行列转换和去重操作。 首先,了解SQL语句的执行顺序至关重要。在一般的查询中,如`SELECT`、`FROM`、`WHERE`,执行顺序为:先...

Global site tag (gtag.js) - Google Analytics