参考来自:http://bbs.csdn.net/topics/390737006

1.效果演示

(1)不做处理

(2)合并多列,并对后四列的值做并集处理

2.SQL语句

(1)不做处理

 SELECT
C .fd_tenantid AS fdTenantId,
C .fd_resid AS fdResid,
C .fd_res_name AS fdResName,
C .fd_service AS fdService,
b.fd_get AS fdGET,
b.fd_post AS fdPOST,
b.fd_put AS fdPUT,
b.fd_delete AS fdDELETE
FROM
t_usergroup AS A
INNER JOIN t_permission AS b ON A .fd_groupid = b.fd_groupid
INNER JOIN t_resource AS C ON b.fd_resid = C .fd_resid
INNER JOIN t_tenant AS d ON A .fd_tenantid = d.fd_tenantid
WHERE
d.fd_tenant_name = 'root'
and a.fd_groupid in (10026,10029) ORDER BY c.fd_res_name

(2)合并多列,并对后四列的值做并集处理

当列fd.get的和>=1(至少有一个真),则返回1。

 SELECT
C .fd_tenantid AS fdTenantId,
C .fd_resid AS fdResid,
C .fd_res_name AS fdResName,
C .fd_service AS fdService,
(CASE WHEN SUM(b.fd_get) >= THEN ELSE END) AS fdGET,
(CASE WHEN SUM(b.fd_post) >=1 THEN 1 ELSE 0 END) AS fdPOST,
(CASE WHEN SUM(b.fd_put) >=1 THEN 1 ELSE 0 END) AS fdPUT,
(CASE WHEN SUM(b.fd_delete) >=1 THEN 1 ELSE 0 END) AS fdDELETE
FROM
t_usergroup AS A
INNER JOIN t_permission AS b ON A .fd_groupid = b.fd_groupid
INNER JOIN t_resource AS C ON b.fd_resid = C .fd_resid
INNER JOIN t_tenant AS d ON A .fd_tenantid = d.fd_tenantid
WHERE
d.fd_tenant_name = 'root'
and a.fd_groupid in (10026,10029) GROUP BY
d.fd_tenantid,c.fd_resid,c.fd_service
ORDER BY c.fd_res_name

2017.7.14 使用case when和group by将多条数据合并成一行,并且根据某些列的合并值做条件判断来生成最终值的更多相关文章

  1. hive内group by取第一条数据,Hive中row_number的使用

    1.hive的分组和组内排序---语法 语法: row_number() over (partition by 字段a order by 计算项b desc ) rank rank是排序的别名 par ...

  2. Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)

    Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...

  3. MySQL 关于case when结合group by用时的写法举例

    原表是个员工档案,共583人,但case when结合group by用时,写法不同,其出来的结果也不同 例1: select distinct a.Branch,case when kultur = ...

  4. 为什么说在使用多条件判断时switch case语句比if语句效率高?

    在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...

  5. 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法

    来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...

  6. puppet(3) 变量、数据类型、表达式、条件判断语句-if、case、selector、unless

    puppet(4) 变量.数据类型.表达式.条件判断语句-if.case.selector语句 puppet变量: 1.名称必须以$开头:赋值使用=,支持追加赋值+=: 2.每个变量都有两种引用格式: ...

  7. 演讲:对 2000 多亿条数据做一次 group by 需要多久?

    http://2017.qconbeijing.com/presentation/646?utm_source=weibo&utm_medium=infoq&utm_campaign= ...

  8. [Shell]条件判断与流程控制:if, case, for, while, until

    ---------------------------------------------------------------------------------------------------- ...

  9. sql 语句中使用条件判断case then else end

    sql 语句中使用条件判断case then else end范例: SELECT les.[nLessonNo] FROM BS_Lesson AS les WHERE les.[sClassCod ...

随机推荐

  1. 刷题总结——Aeroplane chess(hdu4405)

    题目: Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 grids labele ...

  2. php 内核变量 引用计数器写时复制

    写时复制,是一个解决内存复用的方法,就是你在php语言层,如$d=$c=$b=$a='value';把$a赋给另一个或多个变量,这时这个变量都只占用一个内存块,当其中一个变量值改变时,才会开辟另一个内 ...

  3. 转载: CentOS/Linux 解决 SSH 连接慢

    CentOS/Linux 解决 SSH 连接慢 现在连接Linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很 ...

  4. MySQL-based databases CVE -2016-6663 本地提权

    @date: 2016/11/3 @author: dlive 0x01 漏洞原文 翻译水平不高求轻喷 感觉作者在写文章的时候有些地方描述的也不是特别清楚,不过结合poc可以清晰理解漏洞利用过程 0x ...

  5. C程序编译过程浅析【转】

    转自:http://blog.csdn.net/koudaidai/article/details/8092647 前几天看了<程序员的自我修养——链接.装载与库>中的第二章“编译和链接” ...

  6. CppCMS1.0.3 Build by VS2012

    1.CppCMS简介 CppCMS是一个C++的Web开发框架(不是一个CMS).它不同于大多数其他Web开发框架,如巨蟒Django , Java的Servlets ,或C++ Wt因为它在设计和调 ...

  7. FileReader&FileWriter

    FileReader public static void main(String[] args) { //创建文件对象指定要读取的文件路径 File file=new File("d:\\ ...

  8. C#实时读取数据----局部页面刷新【转】

    I)现在刚开始学习C#,对一些基本的控件了解的不够,有个实时监控的系统,需要页面中的数据每5秒钟刷新一次, 要是每5秒钟页面全部的刷新,那页面根本就没法看了,对这个问题在CSDN上也专门开了帖子,问了 ...

  9. Codeforces 832 B. Petya and Exam-字符串匹配

    补的若干年以前的题目,水题,太菜啦_(:з」∠)_    B. Petya and Exam   time limit per test 2 seconds memory limit per test ...

  10. lua异常捕获

    解析json失败,想要捕获异常,可以使用pacll local cjson = require("cjson") local str = '[{"name":& ...