MSSQL2005行列转换(使用PIVOT and UNPIVOT)

关于sqlserver中的pivot和 unpivot 在sqlsever2005后有次关键字; 1、pivot(使绕枢轴旋转,行转列) 语法: 以下是带批注的 PIVOT 语法。 SELECT , [first pivoted column] AS , [second pivoted column] AS , ... [last pivoted column] AS FROM () AS PIVOT 阅读详情

PIVOT syntax:

       SELECT ..... FROM pivoted_table
       pivoted_table ::= table_source PIVOT <pivot_clause> table_alias
       table_source ::= table,view, sub-query,XML......, 即SQL语句From关键字后可以跟的所有东西,定义太复杂,这里就不写了
       pivot_clause ::=(  aggregate_function ( value_column ) 
                                    FOR pivot_column 
                                    IN ( <column_list> )
                                 )
    UNPIVOT syntax:
       SELECT ..... FROM unpivoted_table
       unpivoted_table ::= table_source UNPIVOT <unpivot_clause> table_alias
       table_source ::= Table, view, sub-query, XML..., 即SQL语句From关键字后可以跟的所有东西,定义太复杂,这里就不写了
       unpivot_clause ::= ( value_column FOR pivot_column IN ( <column_list> ) )
    PIVOT example:
 
    CREATE TABLE Score ( 
         StuNo varchar(10), 
         StuName varchar(50), 
         CourseName varchar(50), 
         Score int
    );
    GO
    
    INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('1', 'Tom', 'Math', 80);
    INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('1', 'Tom', 'English', 82);
    INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('1', 'Tom', 'Geography', 84);
    INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('2', 'Jone', 'Math', 79);
    INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('2', 'Jone', 'English', 88);
    INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('2', 'Jone', 'Geography', 86);
    GO

原始数据如下:

    SELECT * FROM Score;

   

用PIVOT语句,将行转换成列,语句如下:
    --Change row to column:
    SELECT StuNo, StuName, Math, English, Geography
    FROM Score
    PIVOT ( 
             MAX(Score) FOR CourseName IN (Math, English, Geography) 
          ) AS ScoreList
    ORDER BY StuNo;

运行结果如下:

    UNPIVOT example:
 
    CREATE TABLE ScoreList ( 
            StuNo varchar(10), 
            StuName varchar(50), 
            Math int, 
            English int, 
            Geography int
    );
    GO
    INSERT INTO ScoreList (StuNo, StuName, Math, English, Geography) VALUES ('1', 'Tom', 80, 82, 84);
    INSERT INTO ScoreList (StuNo, StuName, Math, English, Geography) VALUES ('2', 'Jone', 79, 88, 86);
    GO
    SELECT * FROM ScoreList;

下面将列转换成行:
    --Change column values to row:
    SELECT StuNo, StuName, CourseName, Score
    FROM ScoreList
    UNPIVOT ( 
               Score FOR CourseName IN (Math, English, Geography) 
            ) AS ScorePvtTable
    ORDER BY StuNo;

[MSSQL]采用pivot函数实现动态行转列 环境要求:2005+在日常需求中经常会有行转列的事情需求处理,如果不是动态的行,那么我们可以采取case when 罗列处理。在sql 2005以前处理动态行或列的时候,通常采用拼接字符串的方法处理,在2005以后新增了pivot函数之后,我可以利用这样函数来处理。1.动态SQL注入式判断函数--既然是用到了动态SQL,就有一个老话题:SQL注入。建一个注入性字符的判断函数。 CREATE FUN 阅读详情

相关推荐

MSSQL动态行转列:用PIVOT轻松搞定交叉报表

SQL Server PIVOT函数使用指南 本文介绍了SQL Server中PIVOT函数的应用,用于实现行转列操作。主要内容包括: PIVOT基础语法 通过聚合函数将行数据转换为列 相比传统CASE WHEN写法更简洁高效 动态PIVOT实现 处理列值不确定的情况 使用动态SQL构建列名列表 包含完整示例代码 高级应用场景 多行标识的行转列 添加汇总计算列 UNPIVOT逆向操作 注意事项 聚合函数选择 NULL值处理 多列分组规则 动态SQL安全建议 文章提供了从基础到进阶的完整解决方案,帮助开发者高

德仔 237

MSSQL·PIVOT关键字实现列转行

阅文时长 | 1.03分钟 字数统计 | 1648.8字符 主要内容 | 1、引言&背景 2、PIVOT基本语法结构 3、数据准备&列转行实现 4、声明与参考资料 『MSSQL·PIVOT关键字实现列转行』 编写人 | SCscHero 编写时间 | 2021/8/16 PM11:39 文章类型 | 系列 完成度 | 已完成 座右铭 每一个伟大的事业,都有一个微不足道的开始。 一、引言&背景  ..

SCscHero的博客 881

SQLServer列转行函数Unpivot

SQLServer列转行函数Unpivot会将多列转化为多行,列名转换为列值,会新增两个column:一个column用于存储列名,一个column用于存储列值。

zhengzaifeidelushang的博客 3327

MSSQL 的 PIVOT 和 UNPIVOT 函数

1.   使用POVIT首先你需要在FROM子句内定义2个表:       A.一个称为源表(SourceTable)。       B.另一个称为数据透视表(PivotTable)。 语法: SELECT   ,     [第一个透视列] AS ,    [第二个透视列] AS ,   ...   [最后一个透视列] AS     FROM (   ) AS

江南居 2272

mssql 数据库表行转列,列转行终极方案

mssql 数据库表行转列,列转行终极方案,需要的朋友可以参考下。

如何在OBS中添加实时时间戳:Lua脚本配置教程(附效果展示)

本文详细介绍了如何在OBS中通过Lua脚本配置实时时间戳功能,包括环境准备、脚本获取、安装配置及高级定制。适用于直播和视频录制场景,提供精准回溯和风格自定义,支持多平台适配和性能优化,是专业制作的必备技巧。

day7的博客 1043

sqlserver PIVOT和UNPIVOT使用

PIVOT和UNPIVOT使用详解

微风 3059

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3763

SQL Server 行列相互转换命令:PIVOT和UNPIVOT使用详解

一、使用PIVOT和UNPIVOT命令的SQL Server版本要求 1.数据库的最低版本要求为SQL Server 2005 或更高。 2.必须将数据库的兼容级别设置为90 或更高。 3.查看我的数据库版本及兼容级别。 如果不知道怎么看数据库版本或兼容级别的话可以在SQL Server Management Studio新建一个查询窗口输入:print @@version,运行...

a572893208的博客 1370

AI 模型训练核心方法论:零基础也能落地的 8 个关键阶段

本文是为 AI 零基础学习者打造的模型训练入门指南,以生活化语言拆解核心概念,规避专业术语壁垒。内容先通俗阐释模型训练、监督学习、数据集划分等基础概念,再按问题定义、数据准备、模型选择、环境搭建、训练、评估、调参、部署 8 个阶段,拆解完整训练流程,搭配 PyTorch 代码示例与实战案例,同时提供资源预算、常见问题解决方案及学习路径。指南强调数据的核心重要性,推荐新手优先使用迁移学习和免费 GPU 资源,兼顾理论与实操,帮助学习者快速上手,避开训练误区,独立完成从模型搭建到部署的全流程。

weixin_52741870的博客 468

利用 Openocd 和 FT2232H 实现 ARMv8(Coretex-A53)高效调试方案

本文详细介绍了如何利用开源工具OpenOCD与高性能USB转接芯片FT2232H,构建一套针对ARMv8架构(如Cortex-A53)的高效、低成本调试方案。内容涵盖从环境搭建、驱动配置、核心调试架构解析到实战问题排查的全过程,帮助开发者实现对多核处理器的透明、可控调试,是嵌入式Linux及底层开发的实用指南。

weixin_29163581的博客 280

SQL Server 2005之PIVOT/UNPIVOT行列转换

SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量,这种替用户考虑的开发思路,值得称赞。 在SQL Server2000中,要实现行列转换,需要综合利用聚合函数和动态SQL,实现起来需要一定的技巧,所以在优快云的SQL讨论区里可以看到大量询问行列转换如何实现的问题。到了2005中,使用新引进的关键字PIVOT/UNPIVOT,可以轻松实现行...

weixin_33836874的博客 134

详细介绍:国产操作系统银行麒麟V10的下载和安装

银河麒麟是由。银河麒麟已经发展为银河麒麟服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云、操作系统增值产品为代表的产品线。为攻克中国软件核心技术“卡脖子”的短板,银河麒麟建设自主的开源供应链,发起中国首个开源桌面操作系统根社区openKylin,银河麒麟操作系统以openKylin等自主根社区为依托,发布最新版本。

lz17267861157的博客 1万+

PIVOT/UNPIVOT行列转换

SQL Server 2005之PIVOT/UNPIVOT行列转换     在SQL Server2000中,要实现行列转换,需要综合利用聚合函数和动态SQL,实现起来需要一定的技巧,所以在优快云的SQL讨论区里可以看到大量询问行列转换如何实现的问题。到了2005中,使用新引进的关键字PIVOT/UNPIVOT,可以轻松实现行列转换的需求。好像Oracle11g也准备引入PIVOT/UNPI

yangqian1130的专栏 520

基于Simulink的PMSM轮毂电机崎岖路面悬架协同控制仿真

本文完成了基于Simulink的PMSM轮毂电机崎岖路面悬架协同控制仿真,实现了:✅ 构建了四轮独立驱动+主动悬架高保真整车模型✅ 实现了Skyhook主动悬架控制✅ 设计了驱动-悬架状态共享与协同决策机制✅ 验证了5 m/s高速下连续颠簸路面稳定通过能力✅ 为高性能移动机器人提供一体化底盘解决方案。

xiaoheshang_123的博客 190

【运动规划算法项目实战】Artificial Potential Field算法(附ROS C++代码)

在机器人行业中,路径规划是一个关键的任务,它涉及到如何让机器人在复杂的环境中安全而高效地移动。人工势场算法(Artificial Potential Field Algorithm)是一种常用的路径规划方法,它借鉴了物理学中的势能概念,通过模拟力的作用来引导机器人的移动。本文将详细介绍人工势场算法的原理、在路径规划中的应用、算法优缺点以及代码实现。人工势场算法基于两种势场:斥力场和引力场。斥力场使机器人远离障碍物,而引力场将机器人吸引到目标位置。

xiewf的博客 1万+

SQL Server2005的PIVOT/UNPIVOT行列转

Code/*SQL Server2005的PIVOT/UNPIVOT行列转。SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量。在SQL Server2000中,要实现行列转换,需要综合利用聚合函数和动态SQL,实现起来需要一定的技巧,到了SQL Server2005中,使用新引进的关键字PIVOT/UNPIVOT,可以轻松实现行...

202

32GB Jetson Orin SOM 不能刷机问题排查

拿到了一个新的Orin SOM,当用orin Devkit CVB或定制的CVB不能用Linux_For_Tegra刷机,flash日志(JetPack5.0DP和5.0.1DP都失败了) 2. 确认mb2配置中将CVB的eeprom读取大小设置是否为0 ? 已经确认是正常的 在定制的orin cvb flash上使用Orin devkit som,启动是成功的。但新得到的Orin som并不工作可以排除理由:使用Orin Devkit CVB和Orin SOM(不是Devkit SOM)仍然不能

jzwjzw19900922的博客 1499

SQL Server中行列转换 Pivot UnPivot

PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN() )   UNPIVOT用于将列明转为列

松龄的专栏 1172

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SQLServer行列转换 Pivot UnPivot

PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN() )

Haibing的博客 834

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

oracle unpivot 用法,PIVOT/UNPIVOT的用法

转贴:SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量,这种替用户考虑的开发思路,值得称赞。在SQL Server2000中,要实现行列转换,需要综合利用聚合函数和动态SQL,实现起来需要一定的技巧,所以在优快云的SQL讨论区里可以看到大量询问行列转换如何实现的问题。到了2005中,使用新引进的关键字PIVOT/UNPIVOT,可以轻松实现...

weixin_35353583的博客 896

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SQL Server 2005之PIVOT/UNPIVOT行列转换(转)

SQL Server2005引入了很多迎合开发者口味的新特性,虽然改动不大,却大大了减少了开发者的工作量,这种替用户考虑的开发思路,值得称赞。 在SQL Server2000中,要实现行列转换,需要综合利用聚合函数和动态SQL,实现起来需要一定的技巧,所以在优快云的SQL讨论区里可以看到大量询问行列转换如何实现的问题。到了2005中,使用新引进的关键字PIVOT/UNPIVOT,可以...

aoluan2964的博客 108

PIVOT and UNPIVOT: Optimization and Execution Strategies in an RDBMS

PIVOT和UNPIVOT两个运算符可将表中的数据进行行列置换;本文介绍这两个关系运算的语法、语义、实现原理,及与其他关系运算联合使用时,SQL Server 2005所做的优化。 翻译得很烂,并没有严格按照原文翻译,有些容易理解但却又不好翻译的地方,直接Copy原文没有翻译。建议还是直接看原文: Conor Cunningham, César A. Galindo-Legaria, Goet...

weixin_33858249的博客 971

Pivot和UnPivot 用法

SQL Server 2008中SQL应用系列--目录索引 今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法。这是自SQL Server 2005起提供的新功能。 官方示例:http://msdn.microsoft.com/zh-cn/library/ms177410%28v=sql.105%29.aspx 首先看PIVOT示例: 基本表数据:

kilolo_w的博客 1437

SQLServer中行列转换Pivot UnPivot

PIVOT用于将列值旋转为列名(即行转列),在SQL Server2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN() ) UNPIVOT用于将列...

QQQ2556338777的博客 163
上一篇: 完美的Dos批处理实现sleep
下一篇: SQL Server 2005新聚合函数: Row_Number, Rank, Dense_Rank and nTile介绍
赵大米
博客等级 码龄24年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值