用聚合函数配合CASE语句实现行转列功能:
现在分享一下具体实现代码:
转换前效果:
PlanName | PlanType | PlanLimit |
计划1 | 计划类型1 | RMB 1,000,000 |
计划1 | 计划类型2 | RMB 1,000,000 |
计划1 | 计划类型3 | RMB 1,000,000 |
计划2 | 计划类型1 | RMB 1,000,000 |
计划2 | 计划类型2 | RMB 1,000,000 |
计划2 | 计划类型3 | RMB 1,000,000 |
计划3 | 计划类型1 | RMB 1,000,000 |
计划3 | 计划类型2 | RMB 1,000,000 |
计划3 | 计划类型3 | RMB 1,000,000 |
1、静态实现行转列
with main as
(
select '计划1' as PlanName,'计划类型1' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划1' as PlanName,'计划类型2' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划1' as PlanName,'计划类型3' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划2' as PlanName,'计划类型1' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划2' as PlanName,'计划类型2' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划2' as PlanName,'计划类型3' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划3' as PlanName,'计划类型1' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划3' as PlanName,'计划类型2' as PlanType,'RMB 1,000,000' as PlanLimit
union all
select '计划3' as PlanName,'计划类型3' as PlanType,'RMB 1,000,000' as PlanLimit
)
select PlanType as [计划]
,'计划1'=max(case PlanName when '计划1' then PlanLimit else null end)
,'计划2'=max(case PlanName when '计划2' then PlanLimit else null end)
,'计划3'=max(case PlanName when '计划3' then PlanLimit else null end)
from main
where =
group by PlanType
2、动态实现行转列
-- =============================================
-- Author: <Anne>
-- Create date: <//>
-- Description: <查询SP_AnneTest表的数据>
-- =============================================
CREATE PROCEDURE [dbo].[SP_AnneTest]
(
)
AS
declare @sql varchar()
BEGIN
set @sql='' select @sql=@sql+','+''''+[PlanName]+''''+'=max(case PlanName when '''+[PlanName]+''' then PlanLimit else null end)'
from main
where =
group by PlanType
set @sql='select PlanType as [''计划'']'+@sql+'
from main
where =
group by PlanType' print @sql
exec(@sql) END
GO
实现效果:
计划 | 计划1 | 计划2 | 计划3 |
计划类型1 | RMB 1,000,000 | RMB 1,000,000 | RMB 1,000,000 |
计划类型2 | RMB 1,000,000 | RMB 1,000,000 | RMB 1,000,000 |
计划类型3 | RMB 1,000,000 | RMB 1,000,000 | RMB 1,000,000 |
SQL server 动态行转列的更多相关文章
-
SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...
-
SQL Server 动态行转列(轉載)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段; 方法二:使用拼接SQL, ...
-
代码实现SQL Server动态行转列,不用存储过程
分两步查询,第一步查询出动态列,第二步使用PIVOT函数. 代码: List<DataTable> dataTableList = new List<DataTable>(); ...
-
转:SQL Server 动态行转列
http://www.cnblogs.com/gaizai/p/3753296.html http://www.cnblogs.com/maanshancss/archive/2013/03/13/2 ...
-
老生常谈之SQL Server (行转列,列转行)
Open the first article 在本文章中主要介绍以下内容: 1.静态行转列 2.静态列转行 3.动态行转列 4.动态列转行 1.静态行转列 --静态的行转列 --新建一个科目成绩表 - ...
-
SQL Server pivot 行转列遇到的问题
前段时间开发系统时,有个功能是动态加载列,于是就使用了SQL Server自带的PIVOT函数进行行转列,开始用的非常溜,效果非常好.但是提交测试后问题来了,测试添加的列名中包含空格,然后就杯具了,功 ...
-
SQL SERVER特殊行转列案列一则
今天有个同事找我,他说他有个需求,需要进行行转列,但是又跟一般的行转列有些区别,具体需求如下所说,需要将表1的数据转换为表2的显示格式. 我想了一下,给出了一个解决方法,具体如下所示(先给出测试数据) ...
-
sql server 2005+ 行转列
)) , 'aa') , 'bb') , 'aaa') , 'bbb') , 'ccc') go , , '') from tb group by id
-
sql server数据库行转列及巧用case when、和row_number用法例子
select 身份证号码, MAX(t.单位编号) 单位编号, MAX(t.姓名) 姓名, MAX(case when t.rows=1 then convert(varchar(max),疾病名称) ...
随机推荐
-
bootstrap的图标无法正常显示解决方法
bootstrap的图标无法在火狐浏览器上正常显示,出现的是乱码,如下图所示: 解决方案: 直接把bootstrap整个文件夹放到项目中,引用的时候../static/bootstrap-3.3.5- ...
-
WebForm和WinForm取当前根目录的通用的方法[转载]
转自:WebForm和WinForm取当前根目录的通用的方法 某些环境下用 System.Web.HttpContext.Current.Server.MapPath 取不到目录. 可以用下面两个方法 ...
-
[编织消息框架][JAVA核心技术]cglib动态代理
先在mavne项目里添加cglib库 maven仓库搜索cglib版本 maven地址:http://mvnrepository.com/ 点击最新的版本 3.2.5 复制到pom.xml depe ...
-
java设计模式之模板模式以及钩子方法使用
1.使用背景 模板方法模式是通过把不变行为搬到超类,去除子类里面的重复代码提现它的优势,它提供了一个很好的代码复用平台.当不可变和可变的方法在子类中混合在一起的时候, 不变的方法就会在子类中多次出现, ...
-
OpenAuth.Net.landv分支之旅开始制作CRM系统
OpenAuth.Net.landv分支之旅开始制作CRM系统 这个事件的由来是因为没有一个统一的会员卡平台系统,目前需要连接三家酒店会员系统,由于三家酒店使用了三种酒店管理系统,彼此之间的耦合低.三 ...
-
css绘制内扣圆角
纯静态的一种效果绘制,避免使用图标浪费内存.效果如下 废话不多说,代码如下: <!DOCTYPE html> <html lang="en"> <he ...
-
2017/2/24:Maven的pom jar war的区别
首先,Run ——> Edit Configurations,这时候如下图: 然后点击左上角的加号,可以添加一个新的配置,如下图: 选择Maven,如下图: 下面填上自己的配置信息,点击appl ...
-
Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序
发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排 ...
-
php--------文件夹文件拷贝和复制
php开发中常常对文件进行操作,文件夹和文件的拷贝,复制等. /** * 文件夹文件拷贝 * * @param string $src 来源文件夹 * @param string $dst 目的地文件 ...
-
html文字在django模板中取消转译
django {{ news.content | safe }} 还有escape=fales,具体咋用,有点蒙蔽