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 理解的更多相关文章

  1. sql 理解视图

    可以看作是定义在sqlserver上的虚拟的表,本身并不存储数据,仅仅存储一个select语句和涉及的表的引用 通过视图,客户端不再需要知道底层表结构和其之间的关系,视图提供了一个统一访问数据的接口 ...

  2. [SQL] 理解SQL SERVER中的逻辑读,预读和物理读

    SQL SERVER数据存储的形式 在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小单位为页(Page).每一页大小为8k,SQL SERVE ...

  3. Java 程序员在写 SQL 时常犯的 10 个错误

    Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用“模式-模式”,举个例子,模式可 ...

  4. 十九、oracle pl/sql简介

    一.pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语 ...

  5. oracle pl/sql 简介

    一.pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语 ...

  6. Elasticsearch SQL

    es sql是一个X-pack组件 ,允许对es执行类似sql的查询,可以将Elasticsearch SQL理解为一个编译器,既能理解es,又能理解sql.可以通过利用es,实施大规模实时读取和处理 ...

  7. Java 程序员容易犯的10个SQL错误

    Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用“模式-模式”,举个例子,模式可 ...

  8. mybatis入门基础(七)----延迟加载

    一.什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 需求: ...

  9. MyBatis学习--延迟加载

    简介 在resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能.例如:我们查询订单并 ...

随机推荐

  1. 代码备忘, TODO宏实现

    代码备忘, TODO宏实现 我们平时在开发过程中, 往往并非憋足气一股脑敲完所有代码.每一个模块, 每一个函数的实现总有个先后顺序. 又或者哪个部分须要做调整, 改动- 所以, 我们须要有一个东西, ...

  2. Building Apache Thrift on CentOS 6.5

    Building Apache Thrift on CentOS 6.5 Starting with a minimal installation, the following steps are r ...

  3. gson 设置多个别名SerializedName

    如图: @SerializedName(value = "orderDetail",alternate = {"orderDetail1","adve ...

  4. html5和css3实现的3D滚动特效

    今天给大家带来一款html5和css3实现的3D滚动特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="container"&g ...

  5. [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE

    导入命令 sqoop import --connect jdbc:mysql://192.168.200.250:3306/sqoop --table widgets --hbase-create-t ...

  6. Android圆角图片汇总

    今天来对图片的圆角处理做一个简单小结,很多app里面都有圆角效果,根据不同的场景可以采用不同的方案,目前来说有三种方案是比较常用的 方案一 .9.png 应用场景:1.目标图片已知:2.针对布局背景; ...

  7. 关于Unity中Shader的使用

    在游戏的开发过程中,程序员不太会自己去写shader,因为写起来很麻烦,而且只有Unity会报错,编译器也没有什么提示. 通常是拿别人的shader改一改,当然,程序员还是要能看懂和会一点shader ...

  8. Self20171218_Eclipse+TestNg HelloWorld

    作为一个经典的入门例子,这里展示如何开始使用TestNG单元测试框架. 使用的工具 : TestNG 6.8.7 Maven 3 Eclipse IDE TestNG下载并安装 从这里 http:// ...

  9. java-selenium下载百度图片

    package download; import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStre ...

  10. AFNetWorking能做什么

    AFNetwork是一个轻量级的网络请求api类库.是以NSURLConnection, NSOperation和其它方法为基础的. 以下这个样例是用来处理json请求的: NSURL *url = ...