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. Mysql5.7主主互备安装配置

    一.安装说明 ======================================================================================= 环境:   ...

  2. 最重要的7个Drupal内核模板文件

    Drupal内核拥有40多个模板文件,其中最重要的有7个.它们组成了页面的主要部分,在定制Drupal主题时经常要用到.因此列表如下供大家参考. 模板名 原始位置 用途 html.tpl.php mo ...

  3. IEnumerable<T> 转换为数组

    IEnumerable<User> userlist=xxxx; string[] ids=userlist.select(u=>u.id).toArray();

  4. Listener 监听对象的属性变化

    Listener用于监听Session.context.Request的属性变化,接口名称格式为xxxAttributeListener,包括HttpSessionAttributeListener. ...

  5. PHP利用CURL_MULTI实现多线程

    PHP中的curl_multi一类函数可以实现同时请求多个url,而不是一个一个依次请求,这就类似一个进程实现了多个线程的功能,因此可以使用PHP利用CURL_MULTI实现完成多线程类的任务,下面就 ...

  6. keep or remove data frame columns in R

    You should use either indexing or the subset function. For example : R> df <- data.frame(x=1:5 ...

  7. R语言:读取数据

    主要学习如何把几种常用的数据格式导入到R中进行处理,并简单介绍如何把R中的数据保存为R数据格式和csv文件. 1.保存和加载R的数据(与R.data的交互:save()函数和load()函数)a &l ...

  8. USB学习笔记连载(十二):USB描述符

    USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.H ...

  9. FPGA中的时序分析(五)

    时序约束实例详解 本篇博客结合之前的内容,然后实打实的做一个约束实例,通过本实例读者应该会实用timequest去分析相关的实例.本实例以VGA实验为基础,介绍如何去做时序约束. 首先VGA这种情况属 ...

  10. Android中获取系统上安装的APP信息

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259 Android中获取系统上安装的APP信 ...