2017.7.14 使用case when和group by将多条数据合并成一行,并且根据某些列的合并值做条件判断来生成最终值
参考来自: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将多条数据合并成一行,并且根据某些列的合并值做条件判断来生成最终值的更多相关文章
- hive内group by取第一条数据,Hive中row_number的使用
1.hive的分组和组内排序---语法 语法: row_number() over (partition by 字段a order by 计算项b desc ) rank rank是排序的别名 par ...
- Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...
- MySQL 关于case when结合group by用时的写法举例
原表是个员工档案,共583人,但case when结合group by用时,写法不同,其出来的结果也不同 例1: select distinct a.Branch,case when kultur = ...
- 为什么说在使用多条件判断时switch case语句比if语句效率高?
在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...
- 求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) 分析:这题本来很 ...
- puppet(3) 变量、数据类型、表达式、条件判断语句-if、case、selector、unless
puppet(4) 变量.数据类型.表达式.条件判断语句-if.case.selector语句 puppet变量: 1.名称必须以$开头:赋值使用=,支持追加赋值+=: 2.每个变量都有两种引用格式: ...
- 演讲:对 2000 多亿条数据做一次 group by 需要多久?
http://2017.qconbeijing.com/presentation/646?utm_source=weibo&utm_medium=infoq&utm_campaign= ...
- [Shell]条件判断与流程控制:if, case, for, while, until
---------------------------------------------------------------------------------------------------- ...
- sql 语句中使用条件判断case then else end
sql 语句中使用条件判断case then else end范例: SELECT les.[nLessonNo] FROM BS_Lesson AS les WHERE les.[sClassCod ...
随机推荐
- The Cave
The Cave 题目描述 给定一棵有n个节点的树,相邻两点之间的距离为1. 请找到一个点x,使其满足所有m条限制,其中第i条限制为dist(x,a[i])+dist(x,b[i])<=d[i] ...
- struts2的ajax支持
struts2支持一种stream类型的Result,这种类型的Result可以直接向客户端浏览器响应二进制,文本等, 我们可以再action里面生成文本响应,然后在客户端页面动态加载该响应即可. 直 ...
- Robocopy用法
----------------[参数]-------------------robocopy /?------------------------------------------------- ...
- Java并发(2)- 聊聊happens-before
引言 上一篇文章聊到了Java内存模型,在其中我们说JMM是建立在happens-before(先行发生)原则之上的. 为什么这么说呢?因为在Java程序的执行过程中,编译器和处理器对我们所写的代码进 ...
- js Event对象
(事件阶段)Event Phases Event对象在event第一次触发的时候被创建出来,并且一直伴随着事件在DOM结构中流转的整个生命周期.event对象会被作为第一个参数传递给事件监听的回调函数 ...
- bzoj 1314: River过河 树套树+单调队列
Description ZY带N个小Kid过河,小KID分成两种:高一年级,高二年级,由于存在代沟问题,如果同一条船上高一年级生和高二年级生数量之差超过K,就会发生不和谐的事件.当然如果一条船上全是同 ...
- codeforce 570 problem E&& 51Nod-1503-猪和回文
1503 猪和回文 一只猪走进了一个森林.很凑巧的是,这个森林的形状是长方形的,有n行,m列组成.我们把这个长方形的行从上到下标记为1到n,列从左到右标记为1到m.处于第r行第c列的格子用(r,c)表 ...
- YYH的积木(NOIP模拟赛Round 6)
题目描述 YYH手上有n盒积木,每个积木有个重量.现在他想从每盒积木中拿一块积木,放在一起,这一堆积木的重量为每块积木的重量和.现在他想知道重量最少的k种取法的重量分别是多少. 输入输出格式 输入格式 ...
- glRotatef 转动方向
http://blog.sina.com.cn/s/blog_3c6889fe0100qko6.html glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLf ...
- 关于"implicit declaration of function 'gettimeofday' is invalid in c99"的解决
http://blog.csdn.net/macmini/article/details/10503799 当我们使用 gettimeofday(&time, NULL);时,会出现这样一个W ...