最近有个项目需要做数据导出(基于底层宽表),具体业务逻辑在这就不详细介绍,以下是具体实现方案:

列转换
–方案一 case when 与max 或sum
select *
from (select dzgs_dqbm,
max(bs_wks) bs_wks,
max(bs_jxz) bs_jxz,
max(bs_ywc) bs_ywc,
max(bs_wks_ztdm) wks_ztdm,
max(bs_jxz_ztdm) bs_jxz_ztdm,
max(bs_ywc_ztdm) bs_ywc_ztdm,
bsz_ztdm
from (select a.dzgs_dqbm,
case when a.baoshui_zt =‘0’ then ‘bs_wks’ end bs_wks,
case when a.baoshui_zt =‘1’ then ‘bs_jxz’ end bs_jxz,
case when a.baoshui_zt =‘2’ then ‘bs_ywc’ end bs_ywc,
case when a.baoshui_zt =‘0’ then a.baoshui_ztdm end bs_wks_ztdm,
case when a.baoshui_zt =‘1’ then a.baoshui_ztdm end bs_jxz_ztdm,
case when a.baoshui_zt =‘2’ then a.baoshui_ztdm end bs_ywc_ztdm,
b.bsz_ztdm
from (select dzgs_dqbm,
baoshui_zt,
count(k_ztdm) baoshui_ztdm
from dwb_business_status_list
where dt =‘20181008’ and sbcz = ‘1’
and ty_kjnd is null
and k_nf=‘2018’ AND k_yf=‘9’
group by dzgs_dqbm,baoshui_zt ) a left join (select dzgs_dqbm,count(k_ztdm) bsz_ztdm from dwb_business_status_list where dt =‘20181008’ and sbcz = ‘1’ and ty_kjnd is null and k_nf=‘2018’ AND k_yf=‘9’ group by dzgs_dqbm) b
on a.dzgs_dqbm=b.dzgs_dqbm ) q
group by dzgs_dqbm,bsz_ztdm ) c inner join ( select dzgs_dqbm,
max(jz_wks) jz_wks,
max(jz_jxz) jz_jxz,
max(jz_ywc) jz_ywc,
max(jz_wks_ztdm) jz_wks_ztdm,
max(jz_jxz_ztdm) jz_jxz_ztdm,
max(jz_ywc_ztdm) jz_ywc_ztdm,
jzz_ztdm
from (select a.dzgs_dqbm,
case when a.jizhang_zt=‘0’ then ‘jz_wks’ end jz_wks,
case when a.jizhang_zt=‘1’ then ‘jz_jxz’ end jz_jxz,
case when a.jizhang_zt=‘2’ then ‘jz_ywc’ end jz_ywc,
case when a.jizhang_zt=‘0’ then a.jizhang_ztdm end jz_wks_ztdm,
case when a.jizhang_zt=‘1’ then a.jizhang_ztdm end jz_jxz_ztdm,
case when a.jizhang_zt=‘2’ then a.jizhang_ztdm end jz_ywc_ztdm,
b.jzz_ztdm
from (select dzgs_dqbm,
jizhang_zt,
count(k_ztdm) jizhang_ztdm
from dwb_business_status_list
where dt =‘20181008’ and sbcz = ‘1’ and ty_kjnd is null and k_nf=‘2018’ AND k_yf=‘9’
group by dzgs_dqbm,jizhang_zt ) a inner join ( select dzgs_dqbm, count(k_ztdm) jzz_ztdm from dwb_business_status_list where dt =‘20181008’ and sbcz = ‘1’ and ty_kjnd is null and k_nf=‘2018’ AND k_yf=‘9’ group by dzgs_dqbm) b
on a.dzgs_dqbm=b.dzgs_dqbm ) m
group by dzgs_dqbm,jzz_ztdm ) d
on c.dzgs_dqbm=d.dzgs_dqbm;

–方案二
–列转换 用if函数 if(jizhang_zt=‘0’,1,0)
select
dzgs_dqbm,
sum(if(jizhang_zt=‘0’,1,0)) jizhang_zt_0,
sum(if(jizhang_zt=‘1’,1,0)) jizhang_zt_1,
sum(if(jizhang_zt=‘2’,1,0)) jizhang_zt_2,
sum(if(baoshui_zt=‘0’,1,0)) baoshui_zt_0,
sum(if(baoshui_zt=‘1’,1,0)) baoshui_zt_1,
sum(if(baoshui_zt=‘2’,1,0)) baoshui_zt_2,
count(1)
from biz_dw.dwb_business_status_list
where dt =‘20181008’ and sbcz = ‘1’
and ty_kjnd is null
and k_nf=‘2018’ AND k_yf=‘9’
group by dzgs_dqbm

Hive 多列转行 (if函数)相关推荐

  1. hive Sql列转行使用explode的注意事项-null值处理

    hive Sql列转行使用explode的注意事项-null值处理 日常工作中,我们经常会用Lateral View 结合explode将数据炸裂,但是该方法对应explode的内容是有非null限制 ...

  2. Oracle列转行的函数

    listagg是一个列转行的函数,返回一个varchar2的字符串,measure_expr为要转换的列,可以多列,delimiter是measure_expr之间拼接的分隔符, 可以没有,withi ...

  3. Oracle之列转行Unpivot函数

    文章目录 列转行Unpivot函数用法 列转行Unpivot函数用法 unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的 ...

  4. hive 如何将数组转成字符串_hive详细笔记(八)-Hive之列转行和行转列(附带讲解视频 )...

    1 行转列 1.1 函数 CONCAT(string A/col, string B/col-):返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1 ...

  5. 经常用到的透视函数(行转列列转行)函数 PIVOT()UNPIVOT

    说明: 工作中经常遇到一组or一条数据按照不同类型被分成多条数据,如 一条合同的分期还款账单按照不同类型被分成本金,利息,管理费等, 数据统计工作中,一条合同一期就会分成多条合同 如 实际工作中 常需 ...

  6. Oracle列转行unpivot函数的使用

    一.unpivot函数语法 说明:将表中多个列缩减为一个聚合列(多列转多行) 语法:unpivot(新列名 for 聚合列名 in (对应的列名1-列名n )) 二.实例应用 1.unpivot的简单 ...

  7. oracle 列转行sql函数

    1.列转行 列拼接 wm_concat() --11g listagg() within group() 列转行汇总数据 decode() --用decode实现行转列 --适用范围:8i,9i,10 ...

  8. MySQL列转行(group_concat函数)

    在MySQL中,如何将列转成一行?比如一个一个商品会属于多个分类(如华为手机可以是手机分类,也可以是数码分类),如何将此商品在一条数据中展现所有分类. 思路很简单,通过MySQL函数group_con ...

  9. mysql 列转行 unpivot_SQL 之列转行Unpivot函数

    这是总结SQL知识点的第二篇文章,一次只总结一个知识点,尽量说明白.上次我们谈到行转列,用的是Pivot函数,这次我们来谈谈Unpivot函数.(这里是用的数据库是SQLSERVER,与其他数据库是类 ...

最新文章

  1. 【leetcode 简单】 第五十五题 打家劫舍
  2. CF-778 C.Peterson Polyglot (Trie合并)
  3. Microsoft Silverlight 4 脱机文档
  4. DC / OS中具有Java和数据库应用程序的服务发现
  5. [机器学习笔记]Note7--神经网络:学习
  6. tgc 什么意思 tgt_TGT的完整形式是什么?
  7. python 运行电脑卡死_Python入门 5——循环语句及条件判断
  8. linux mount nfs 超时,I / O无法(偶尔)挂载NFS-服务器超时
  9. Oracle内存结构详解(四)--Oracle SGA其他组成部分
  10. 阅读圣经丨变量引起的上下文
  11. 软件定义汽车-AUTOSAR解决方案
  12. android 拨号隐藏号码,技巧:手机隐藏代码大集合 知道五个以上是大神
  13. 2020 dns排名_2020年中国最快的dns_动漫台
  14. 电子产品做3C认证检测标准是什么
  15. 产品经理之结构化思维表达
  16. web课程设计:网上商城系统
  17. android银行卡输入密码,android 仿微信添加银行卡时输入支付密码
  18. java 数组形式字符串_java 数组格式字符串转化为字符串
  19. 基于Bootstrap4写的一个JQuery分页插件
  20. 图片爬取和IP地址查询

热门文章

  1. 使用ajax——ajax四部曲
  2. 电子火折子的电路原理
  3. mysql服务无法启动问题
  4. 哈工大深圳计算机自动化专业,欢迎报考哈工大深圳研究生院自动化系
  5. java unpark_LockSupport中的park与unpark原理
  6. 打工人必备摸鱼神器Hurry home(下班回家)保姆式使用教程
  7. ICPC nangchan I. Max answer
  8. 如何解决KEIL 5 编译KEIL4的带有RTX系统的工程解决方法
  9. npm安装报no such file or directory原因和解决方法
  10. java首字母判断星期几_Java 获取汉字串首字母并大写和获取汉字的全拼(英文字符不变) 判断字符串是否为字母...