DECLARE @sql_col VARCHAR(8000);
DECLARE @sql_str VARCHAR(8000);
DECLARE @sql_ VARCHAR(MAX);
SELECT @sql_col = ISNULL(@sql_col + ',', '')
+ QUOTENAME(BBCAccount.dbo.BusinessType.Name)
FROM BBCAccount.dbo.BusinessType
WHERE ParentCode IS NULL
AND Type = 0
AND IsSystem = 1;
SET @sql_ = 'select *
from(
select Code,Name from BBCAccount.dbo.BusinessType WHERE ParentCode IS NULL AND Type=0 AND IsSystem=1
)as tw
pivot( max(Code) for Name in(' + @sql_col + ') )piv ';
EXEC(@sql_); 明显,UN这个前缀表明了,它做的操作是跟PIVOT相反的,即列转行。UNPIVOT操作涉及到以下三个逻辑处理阶段。 1,生成副本
2,提取元素
3,删除带有NULL的行 UNPIVOT实例 CREATE TABLE pvt
(
VendorID INT ,
Emp1 INT ,
Emp2 INT ,
Emp3 INT ,
Emp4 INT ,
Emp5 INT
);
GO
INSERT INTO pvt
VALUES ( 1, 4, 3, 5, 4, 4 );
INSERT INTO pvt
VALUES ( 2, 4, 1, 5, 5, 5 );
INSERT INTO pvt
VALUES ( 3, 4, 3, 5, 4, 4 );
INSERT INTO pvt
VALUES ( 4, 4, 2, 5, 5, 4 );
INSERT INTO pvt
VALUES ( 5, 5, 1, 5, 5, 5 );
GO
--Unpivot the table.
SELECT VendorID ,
Employee ,
Orders
FROM ( SELECT VendorID ,
Emp1 ,
Emp2 ,
Emp3 ,
Emp4 ,
Emp5
FROM pvt
) p UNPIVOT
( Orders FOR Employee IN ( Emp1, Emp2, Emp3, Emp4, Emp5 ) )AS unpvt;
GO

  

SQL中PIVOT和UNPIVOT行列转换的更多相关文章

  1. SQL中PIVOT 行列转换

    来源:http://www.studyofnet.com/news/295.html PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列 ...

  2. SQL pivot 基本用法 行列转换 数据透视

    SQL通过pivot进行行列转换 数据透视 可直接在sql server 运行 传统操作 和 pivot create table XKCl (name nchar(10) not null, 学科 ...

  3. (sql server)玩转-数据库行列转换

    虽然开发过程中没用过行列转换,但是听说面试时常常会遇到这个问题,以前在网上也看到过大神的例子,今天自己仔细的玩了下,希望和大家分享一下了. 注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦 ...

  4. [转]Oracle SQL函数pivot、unpivot转置函数实现行转列、列转行

    原文地址:http://blog.csdn.net/seandba/article/details/72730657 函数PIVOT.UNPIVOT转置函数实现行转列.列转行,效果如下图所示: 1.P ...

  5. sql学习~pivot和unpivot用法

    pivot  可以把列值转换为输出中的多个列. pivot 可以在其他剩余的列的值上执行聚合函数. unpivot 将列转换为列值 语法 SELECT <non-pivoted column&g ...

  6. SQL中的Convert()函数方法(转换数据格式)

    Convert函数的使用方法 格式: convert(data_type(length),data_to_be_converted,style) data_type(length)转换的目标数据类型, ...

  7. sql中时间的一些特殊转换

    1.修改时间的秒和微秒 create table a (Dtime datetime);insert into aselect '2013-08-30 17:59:35' union allselec ...

  8. SQL中的字母的大小写转换

    http://blog.csdn.net/dxb601/article/details/52086830 update 表名 set 字段名a= Lower(字段a)   2.将小写字母转化成大写字母 ...

  9. 【转】Spark实现行列转换pivot和unpivot

    背景 做过数据清洗ETL工作的都知道,行列转换是一个常见的数据整理需求.在不同的编程语言中有不同的实现方法,比如SQL中使用case+group,或者Power BI的M语言中用拖放组件实现.今天正好 ...

随机推荐

  1. WPF DataPager控件

    最近在项目中遇到远程加载数据的问题,由于服务器采用分页方式返回数据,因此客户端也相应的制作了一个分页控件.代码相对简单,算做入门级的源码. 效果如图: 初步分析,分页功能只需要3个核心变量:PageI ...

  2. Bootstrap相关的网站

    http://www.bootcss.com/ http://expo.bootcss.com/ http://www.webresourcesdepot.com/20-beautiful-resou ...

  3. js冒泡排序及计算其运行时间

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. Android内存泄露---检测工具篇

    内存使用是程序开发无法回避的一个问题.如果我们毫不在意肆意使用,总有一天会为此还账,且痛不欲生...所以应当防患于未然,把内存使用细化到平时的每一行代码中. 内存使用概念较大,本篇先讲对已有app如何 ...

  5. loadrunner动态从mysql取值

    loadrunner动态从mysql取值 [需要下载跟数据库服务器一致的dll,32位或64位] loadrunner中有参数化从数据库中取值,但是只是静态的,对于一些要实时取值的数据就game ov ...

  6. C#中let字句

    应用场景: 在查询表达式中,存储子表达式的结果有时很有用,这样可以在随后的子句中使用. 可以使用 let 关键字完成这一工作,该关键字可以创建一个新的范围变量,并且用您提供的表达式的结果初始化该变量. ...

  7. ubuntu下安装pdo和pdo_mysql扩展

    ubuntu下安装好LAMP后默认情况没有安装mysql_pdo扩展,以下是安装步聚 1 安装pdo sudo pecl install pdo 出现以下错误是说明pdo已经加入了php的默认安装,不 ...

  8. 自己开发轻量级ORM(二)

    上一篇简单的对轻量级ORM开发开了个头.这篇主要聊下ORM框架的设计思路. ORM本质上是对数据库操作的抽象.大体上我将其分为对数据结构的抽象和对执行方法的抽象. 我的ORM设计图: ORM框架需要完 ...

  9. 微端游戏启动器launcher的制作之下载篇(系列一)

    首先第一篇先讲一讲launcher最核心的功能---下载功能. 这个部分估计得好几篇才能写完,东西比较多也比较杂,慢慢来吧,我的东西也在继续改进中...... 从web上下载文件需要用到几个类,Htt ...

  10. C++ 头文件系列 (bitset)

    简介 该头文件有关位集,实际上是vector 位 位本质上对应bool的概念,只有0或1,true或false两种对立的值. 但很可惜,字节才是机器上最小的存储单元,所以bool基本上是由一个字节大小 ...