mssql sqlserver 不固定行转列数据(动态列)
转自:http://www.maomao365.com/?p=5471
摘要:
下文主要讲述动态行列转换语句,列名会根据行数据的不同,
动态的发生变化
----------------------------------------------------
实现思路:
主要将待生成的动态列名,采用脚本拼接起来,然后采用pivot函数
运行,得到相应的结果
本脚本运行环境:
sql server 2008
/*生成源数据表*/
create table #t
(compname varchar(20),
cheXi varchar(30),
dayInfo int,
daySaleValue int) /*生成源数据*/
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','锐志','',20)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','皇冠','',10)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','霸道','',30)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','锐志','',40)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','RAV4','',60)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','锐志','',8)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','霸道','',6)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','RAV4','',9)
insert into #t(compname,cheXi,dayInfo,daySaleValue) values('一汽丰田','RAV4','',10) /*
select * from
(select compname,daySaleValue,dayInfo,chexi from #t) as d
/*注意事项: pivot所涉及的聚合列 value_column 和 pivot_column
都必须存在 上面的查询表中
*/
pivot(sum(daySaleValue) for dayInfo
in([],[],[],[],[],[],[],[],[],[]))
t ;
*/
/*拼接字符串*/
declare @sql varchar(max)
set @sql =' select * from
(select compname,daySaleValue,dayInfo,chexi from #t) as d
pivot(sum(daySaleValue) for dayInfo
in(
'; /*动态组合列名*/
declare @lieMing varchar(7000) ---定义动态生成列名存放变量
declare @i int ,@imax int,@field varchar(60) ---定义临时循环变量
declare @fieldList table(keyId int identity,field varchar(60)) ---定义临时表,存放待生成动态列名的数据
insert into @fieldList(field) select distinct dayInfo from #t ---生成列名数据 -------------循环表生成列名start--------------
set @lieMing =''
set @i=1
select @imax =max(keyId) from @fieldList t
while @i <@imax
begin
select @field =field from @fieldList t where t.keyId=@i
if isnull(@field,'') !=''
begin
if @lieMing !='' begin set @lieMing =@lieMing +',' end
set @lieMing = @lieMing+'['+@field+']';
end
set @i=@i+1
end
-------------循环表生成列名end--------------
/*动态组合列*/ set @sql =@sql +@lieMing +' )) t ;'; ---拼接sql语句
exec (@sql) ---执行sql脚本,生成相关数据 truncate table #t
drop table #t

mssql sqlserver 不固定行转列数据(动态列)的更多相关文章
- SSRS实现 矩阵列实现动态列
需求背景:按区域查询店铺的销售量和库存量,然后店铺的数据是动态的.实现类似效果如下图,其中蓝色框是动态的,店铺的数量是不确定的,可能是3个,也可能是20个. 步骤一: 步骤二: 加工后: 最后效果:
- Oracle笔记(七) 数据更新、事务处理、数据伪列
一.数据的更新操作 DML操作语法之中,除了查询之外还有数据的库的更新操作,数据的更新操作主要指的是:增加.修改.删除数据,但是考虑到emp表以后还要继续使用,所以下面先将emp表复制一份,输入如下指 ...
- mysql两表合并,对一列数据进行处理
加班一时爽,一直加班~一直爽~ 欢迎收看http://www.996.icu/ 今天弄了下MySQL中两表合并的并且要处理一列数据,这列数据原来都是小写字母,处理时将这列数据改成驼峰命名的~~ 基本 ...
- mssql sqlserver 将逗号分隔的一列数据转换为多列数据的方法分享
转自:http://www.maomao365.com/?p=10278 摘要: 下文讲述sqlserver中将使用逗号组合的单列数据,分隔为多列数据的方法 实验环境:sql server 2012 ...
- mssql sqlserver 可以存储二进制数据的字段类型详解
转自: http://www.maomao365.com/?p=6738 摘要: 下文将从数据库的数据类型着手,剖析在sqlserver数据库中可以存储二进制数据的数据类型,如下所示: mssql s ...
- C# 使用Epplus导出Excel [1]:导出固定列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- jQqery EasyUI dategrid行中多列数据的可编辑操作
最近的项目中需要在前台dategrid列表中直接修改某些列的数据,并且修改后的数据需要不通过后台而自动更新在列表中. 带着这一问题开始寻找实现的思路,首先想到的就是去jQqery EasyUI官网找例 ...
- FPGA计算3行同列数据之和
实验:FPGA计算3行同列数据之和 实验要求:PC机通过串口发送3行数据(一行有56个数据,3行共有56*3=168个数据)给FPGA,FPGA计算3行同一列数据的和,并将结果通过串口返回给上位机. ...
- SQL两列数据,行转列
SQL中只有两列数据(字段1,字段2),将其相同字段1的行转列 转换前: 转换后: --测试数据 if not object_id(N'Tempdb..#T') is null drop table ...
随机推荐
- Tair总述
Tair 是淘宝自己开发的一个分布式 key/value 存储引擎.tair 分为持久化和非持久化两种使用方式.非持久化的 tair 可以看成是一个分布式缓存.持久化的 tair 将数据存放于磁盘中. ...
- VirtualBox报错:不能为虚拟电脑XXX打开一个新任务
报错产生的背景 今天在这里下载了一个用于VirtualBox的Kali Linux虚拟机文件(使用VirtualBox可以直接打开使用,不用执行安装过程).但是将该文件导入到VirtualBox中之后 ...
- Canvas的基本用法
canvas没有设置宽度和高度的时候,会初始化宽度:300像素和高度:150像素.可以使用CSS来定义大小,但在绘制时图像会伸缩以适应它的框架尺寸:如果CSS的尺寸与初始画布的比例不一致,它会出现扭曲 ...
- linux系统安装mysql
所有平台的Mysql下载地址为: MySQL 下载. 挑选你需要的 MySQL Community Server版本及对应的平台. 接下来我们在 Centos 系统下使用 yum 命令安装 MySql ...
- redis list命令操作
1.将值追加到列表 RPUSH key value [value ...]summary: Append one or multiple values to a listsince: 1.0.0 12 ...
- 大话RabbitMQ 基础入门
----------写在前面---------- 近些年微服务越来越火,让我也忍不住想去一窥微服务究竟,讲到微服务,就离不开分布式,而分布式,也离不开消息队列,在消息队列中,RabbitMQ可以说是比 ...
- Python logger /logging
# !/user/bin/python # -*- coding: utf-8 -*- ''' subprocess : 需要在linux平台上测试 shell logging ''' import ...
- 如何在markdown中打出上标、下标和一些特殊符号
转自:https://www.jianshu.com/p/80ac23666a98 如何在markdown中打出上标.下标和一些特殊符号 这是朕的江山 关注 2016.08.16 17:07* 字数 ...
- 转[@SuppressWarnings详解]
背景知识: 从JDK5开始提供名为Annotation(注释)的功能,它被定义为JSR-175规范.注释是以“@注释名”在代码中存在的,还可以添加一些参数 值,例如:@SuppressWa ...
- Instrumentation(1)
Instrumentation介绍: JavaInstrumentation指的是可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM上的应用程序.这种监测和协助包括但不限于获取J ...