oracle sql列转行_SQL列转行及行转列
--============================================== 作者:王运亮(wwwwgou) 时间:2011-06-10 博客:http://blog.csdn.net/wwwwgou --==============================================
--1.行转列 IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp GO CREATE TABLE #temp ( id INT IDENTITY, [name] NVARCHAR(10), [type] NVARCHAR(10), [amount] INT ) INSERT #temp SELECT N'One', N'type1', 1 UNION ALL SELECT N'One', N'type1', 2 UNION ALL SELECT N'One', N'type2', 3 UNION ALL SELECT N'Two', N'type1', 4 UNION ALL SELECT N'Two', N'type1', 5 GO
--#1. 行转列字段值固定. --1.case when SELECT [name], [type1] = SUM(CASE [type] WHEN N'type1' THEN [amount] ELSE 0 END), [type2] = SUM(CASE [type] WHEN N'type2' THEN [amount] ELSE 0 END) FROM #temp GROUP BY [name] --2.pivot SELECT [name], [type1] = ISNULL([type1], 0), [type2] = ISNULL([type2], 0) FROM (SELECT [name], [type], [amount] FROM #temp) a PIVOT (SUM([amount]) FOR [type] IN([type1], [type2])) b
--#2. 行转列字段值不固定,只能拼SQL了. --1.case when DECLARE @sql NVARCHAR(MAX) SET @sql = N''
SELECT @sql = @sql + N', ' + CHAR(10) + QUOTENAME([type]) + N' = SUM(CASE [type] WHEN N'''+ [type] +N''' THEN [amount] ELSE 0 END)' FROM (SELECT DISTINCT [type] FROM #temp) T
SET @sql = N'SELECT [name]' + @sql SET @sql = @sql + CHAR(10) + N'FROM #temp GROUP BY [name]'
EXEC(@sql)
--2.pivot SET @sql = N''
SELECT @sql = @sql + N', ' + CHAR(10) + QUOTENAME([type]) + N' = ISNULL('+ QUOTENAME([type]) +N', 0)' FROM (SELECT DISTINCT [type] FROM #temp) T
SET @sql = N'SELECT [name]' + @sql SET @sql = @sql + CHAR(10) + N'FROM (SELECT [name], [type], [amount] FROM #temp) a' + CHAR(10) + N'PIVOT' + CHAR(10) + N'(SUM([amount]) FOR [type] IN('+ STUFF((SELECT DISTINCT ','+QUOTENAME([type]) FROM #temp FOR XML PATH('')),1,1,'') +N')) b'
EXEC(@sql)
--2.列转行 IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp GO CREATE TABLE #temp ( id INT IDENTITY, [name] NVARCHAR(10), [type1] NVARCHAR(10), [type2] NVARCHAR(10), ) INSERT #temp SELECT N'One', 3, 3 UNION ALL SELECT N'Two', 9, 0 GO
--1.union all SELECT rowno=ROW_NUMBER() OVER(ORDER BY name), * FROM ( SELECT name, [type] = N'type1', [amount] = type1 FROM #temp UNION ALL SELECT name, [type] = N'type2', [amount] = type2 FROM #temp ) T
--2.unpivot SELECT rowno=ROW_NUMBER() OVER(ORDER BY name), * FROM (SELECT [name], type1, type2 FROM #temp) a UNPIVOT ([amount] FOR [type] IN([type1],[type2])) b
oracle sql列转行_SQL列转行及行转列相关推荐
- oracle列转行 多个字段_oracle 行转列~列转行(几种方法)
工作中,我们经常会碰到行转列的情况 这里我介绍几种简单的方法--行转列 1.oracle的pivot函数 原表 使用pivot函数: with temp as( select '四川省' nation ...
- mysql 列换行 表设计 设计_MySql行转列、列转行
现mysql中有一张表php_user表,表结构为: 表中数据有: 现在想查询出来不同学生的语数外成绩在一行显示,那么需要用到行转列的用法, 一.行转列 1.使用case...when....then ...
- sql server列转行怎么提高效率_行转列、列转行
1.行转列 所谓行转列,即将一行数据转成多行显示,或者说将多列数据转成一列显示.通常将转化后的列名为某一行中某一列的值,来识别原先对应的数据.具体如下: 通常的SQL实现用union来实现,如下.有些 ...
- excel根据条件列转行_excel怎么批量把行变成列
1. excel中怎样批量将行数据转换成列数据 你好,楼主想要的功能,可以使用VBA程序实现. (一)VBA程序代码如下:(代码运行之前请做好数据备份,以免丢失) Sub abcd()Dim i1, ...
- oracle 按旬统计并且每月小计 行转列 PIVOT函数 与分组小计 ROLLUP 函数
数据库版本:oralce 11g 表名WM_TD_WATER_DAILY 结构如下,我把没用到的字段隐藏了,全放出来不太好哈. MONITOR_ID为BI_TB_MONITOR_BI的ID ,用于关 ...
- mysql 行转列分级输出_MySQL如何实现行转列分级输出?_MySQL
概述 好久没写SQL语句,今天看到问答中的一个问题,拿来研究一下. 问题链接:关于Mysql 的分级输出问题 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当 ...
- 删除前10行sql oracle,sql server 如何实现删除前1000行数据
近日,sql数据库入门学习群有朋友问到,利用sql如何删除表格的前1000行数据,是否可以实现? 如果是oracle数据库管理软件,实现起来相对简单多了delete from 表名 where r ...
- SparkSQL读取hive中的数据,行转列的两种方式【行转列专用函数,UDAF】
先给数据: vi employees 1,George,nan 2,honey,nv 3,georgedage,nan 4,kangkang,nv 上传数据: hdfs dfs -mkdir /sec ...
- android webservices 返回多行多列数据,NoahWeb实现表格多行多列
用NoahWeb的表现层指令可以在动态生成的页面中非常容易的实现多行多列的表格.在正式学习以前我们需要先来了解一下怎么用NoahWeb的表现层来做动态内容显示. 在NoahWeb设计器中新建或打开一项 ...
- python中pandas.DataFrame如何对行与列求和以及如何添加新行与列的示例
转载 本文介绍的是python中DataFrame对行与列求和及添加新行与列的相关资料,下面话不多说,来看看详细的介绍吧. 方法如下: 导入模块: from pandas import DataFra ...
最新文章
- 线性判别分析(Linear Discriminant Analysis)(一)
- boost::math::boost::math::interpolators::cardinal_cubic_b_spline用法的测试程序
- spring简单入门,入门案列的执行流程,图例
- 阿里巴巴发布AliOS品牌 重投汽车及IoT领域
- 故障恢复 stm32_77条STM32知识,千万不能错过!干货
- 一本通————1244 和为给定数
- Hive中除了窗口函数外的常用函数:casewhen,行转列,列转行
- 初学必看 C陷阱与缺陷(第二版)读书笔记
- OSPF配置实验报告
- 获取access_token报错errcode: 40125,errmsg: invalid appsecret, view more at http://t.cn/RAEkdV
- 坦克大战java主要设计思想_坦克大战游戏Java网络版设计开题报告
- 多项式计算的Horner方法
- 网页前往小程序指定页面
- 详细理解安卓云信的接入及使用
- 宝剑配英雄,玫瑰赠伊人!(祝全天下静姝妇女节快乐!)
- [附源码]java毕业设计网上手机商城
- 时间统计法--柳比歇夫
- 用JavaScript判断一个数是否是素数
- 条条就要离开上海去南通工作了
- 02高级语言及其语法描述