参考来自: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. javascript的Date操作(月初,月末)

    var cur = new Date(), unitDay = 24 * 60 * 60 * 1000; //月初 var sFirstDay = cur.getFullYear() + '/' + ...

  2. Codeforces Round #324 (Div. 2) D

    D. Dima and Lisa time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  3. Bzoj2165 大楼

    Time Limit: 40 Sec  Memory Limit: 259 MBSubmit: 779  Solved: 285[Submit][Status][Discuss] Descriptio ...

  4. 除了IE浏览器,其他浏览器都联不上网怎么办~转载百度经验

    百度师傅最快的到家服务,最优质的电脑清灰 百度经验:jingyan.baidu.com 有个网友遇到一个非常奇怪的上网问题,刚才始,发现QQ不能登录,后来接着发现火狐浏览器也打不开网页,刚开始,以为只 ...

  5. C语言中的“>>”和“<<”

    http://baike.1688.com/doc/view-d1750791.html C语言中的“>>”和“<<” [标签:程序设计] 浏览次数:68937提问时间:200 ...

  6. MAC删除目录下的“.svn”文件的方法

    http://bbs.feng.com/read-htm-tid-7803070.html MAC删除目录的“.svn”文件:打开终端,进到所在的目录,然后出入一下代码find . -name &qu ...

  7. [Oracle] 关系型数据库排序算法和数据结构以及关联查询

    关系型数据库排序算法和数据结构以及关联查询 1. Merge sort 理解merge sort算法将有助于更好地理解数据库join操作 - merge join 算法逻辑 将2个有序的大小为N/2的 ...

  8. sh脚本变量赋值时同时执行命令时的环境问题

    在v2ex看到一个问题: 允许在一个命令之前立即发生一个或多个变量赋值,这些赋值为跟随着的命令更改环境变量,这个赋值的影响是暂时的. 那为什么: int=100 int=10 echo $(($int ...

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

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

  10. Android 利用 AsyncTask 异步读取网络图片

    1.新建Android工程AsyncLoadPicture 新建布局文件activity_main.xml主界面为一个GridView,还有其子项布局文件gridview_item.xml 2.功能主 ...