zoukankan      html  css  js  c++  java
  • 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 这一列的值。都放过去作为列的属性名。。。看图两个圈的描写叙述吧。

    详细本人也不是非常好描写叙述。






  • 相关阅读:
    数字货币交易所数据标准格式
    Python3量化技术常用插件
    线上线下流量趋势
    数字货币做市技术——随机价格
    OKEX API v1 SDK基于 Python 实现
    CEOBI交易所接口文档
    递归拉取订单列表的方法
    XT交易所Websocket API
    XT交易所API
    获取合约日期
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7363353.html
Copyright © 2011-2022 走看看