sql 理解
select b.*,
b.model_ent_name+cast(m.year as varchar)as modelname,
m.index_value as val
into #tb
from
(
select a.*,erm.model_ent_name
from
(select w.uuid,w.indexdef_id,
i.index_name, i.index_def,
case when w.years=2014 then w.actual_value else 0 end as k1,
case when w.years=2013 then w.actual_value else 0 end as k2,
case when w.years=2012 then w.actual_value else 0 end as k3,
case when w.years=2011 then w.actual_value else 0 end as k4,
case when w.years=2010 then w.actual_value else 0 end as k5
from bm_work w,bm_index i
where w.indexdef_id=i.uuid
and w.ent_id='2c90e4da49514c750149515eb56f0003' and w.summary_state=2
and years=2014
)a left join bm_ent_rel_me erm on a.uuid=erm.bmwork_id
)b
left join bm_model_ent m on b.indexdef_id=m.index_def_id and b.model_ent_name=m.model_ent_name
declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+modelname from #tb group by modelname
set @sql = 'select * from #tb pivot (sum(val) for modelname in ('+@sql+') )a'
exec (@sql)
drop table #tb
须要将上图变为下图结果。
实现行转列,及把第一张图片中红圈的部分的内容放置到 列上。作为列的标题。。
。
declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+modelname from #tb group by modelname
set @sql = 'select * from #tb pivot (sum(val) for modelname in ('+@sql+') )a' //val 为值 modelname为须要将行转列
exec (@sql)
//写这样的sql的思路就是,先自己写出类似图一 的结果。确定那一个须要行转列。。
这里我们就是须要modelname 这一列的值。都放过去作为列的属性名。。。看图两个圈的描写叙述吧。
详细本人也不是非常好描写叙述。
sql 理解的更多相关文章
- sql 理解视图
可以看作是定义在sqlserver上的虚拟的表,本身并不存储数据,仅仅存储一个select语句和涉及的表的引用 通过视图,客户端不再需要知道底层表结构和其之间的关系,视图提供了一个统一访问数据的接口 ...
- [SQL] 理解SQL SERVER中的逻辑读,预读和物理读
SQL SERVER数据存储的形式 在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小单位为页(Page).每一页大小为8k,SQL SERVE ...
- Java 程序员在写 SQL 时常犯的 10 个错误
Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用“模式-模式”,举个例子,模式可 ...
- 十九、oracle pl/sql简介
一.pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语 ...
- oracle pl/sql 简介
一.pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语 ...
- Elasticsearch SQL
es sql是一个X-pack组件 ,允许对es执行类似sql的查询,可以将Elasticsearch SQL理解为一个编译器,既能理解es,又能理解sql.可以通过利用es,实施大规模实时读取和处理 ...
- Java 程序员容易犯的10个SQL错误
Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用“模式-模式”,举个例子,模式可 ...
- mybatis入门基础(七)----延迟加载
一.什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 需求: ...
- MyBatis学习--延迟加载
简介 在resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能.例如:我们查询订单并 ...
随机推荐
- iOS第三方支付集成
支付宝(alipay)和微信支付(Wechat Pay) 支付宝: 一.总体流程 (1)先与支付宝签约.获得商户ID(partner)和账号ID(seller)(注冊app⽤用) (2)下载对应的公钥 ...
- 【嵌入式】——arm裸机开发 step by step 之 串口通信
一.在使用S5PV210的串口发送和接收的时候,首先要对S5PV210的串口进行配置,我们使用轮询方式时的配置有哪些? 1.配置GPIO,使对应管脚作为串口的发送和接收管脚 GPA0 0 1 管脚 2 ...
- C#内置泛型委托:Func委托
1.什么是Func委托 Func委托代表有返回类型的委托 2.Func委托定义 查看Func的定义: using System.Runtime.CompilerServices; namespace ...
- A SIMPLE LIBRARY TO BUILD A DEEP ZOOM IMAGE
My current project requires a lot of work with Deep Zoom images. We recently received some very high ...
- qt 字体的相关问题
(一)qtconfig字体列表不全的问题? 发现界面的上的文字不能正常显示,后调用qtconfig发现里面识别的字体非常少,怀疑是编译的时候参数未能设置正确,于是经过多次试验,终于成功找到根结所在,. ...
- Everything:速度最快的文件名搜索工具(Linux版本) 转
Everything是windows的一个快速搜索工具. 基本上转移到Linux上来后,没有怎么用过. 一直在用Gnome-Do,感觉还可以. 这个程序只是用来练习wxPython用的,目前还只是一个 ...
- HashMap的长度为什么要是2的n次方
HashMap为了存取高效,要尽量较少碰撞,就是要尽量把数据分配均匀,每个链表长度大致相同,这个实现就在把数据存到哪个链表中的算法: 这个算法实际就是取模,hash%length,计算机中直接求余效率 ...
- MYSQL数据库从A表把数据插入B表
如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: Code: INSERT INTO 目标表 SELECT * FROM 来源表; 比如要将 articles 表插入到 newArticl ...
- MyBatis错误:Result Maps collection already contains value for novel.storage.mapper.NovelMapper.BaseResultMap
今天在写项目的时候遇到一个问题如下: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ...
- 近期小结 之 Servlet规范及HTTP
最近认真看了下Servlet 3.1的规范,略有收获,如下: 如果客户端不指定编码,Servlet容器必须使用ISO-8859-1编码来处理,且不能添加相应编码信息. Servlet 3 可以手动开启 ...