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 ...
随机推荐
- 【转发】Build Squid with SSL Bump and ICAP Client
原文文档:http://docs.diladele.com/administrator_guide_3_4/installation_and_removal/filtering_https.html ...
- linux设置永久别名
http://blog.csdn.net/miltonzhong/article/details/48089415
- C++ primer 学习笔记之容器insert
今天在做练习9.22时,始终出现segments fault.最后才发现原来是自己对“容器insert之后迭代器会失效”的理解不够透彻. 题目如下: 假定iv是一个int的vector,下面的程序存在 ...
- poj 3729 Facer’s string
Facer’s string Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 2155 Accepted: 644 Des ...
- noip 2010 三国游戏
三国游戏 三国游戏 描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有N 位武将(N为偶数且不小于4),任 ...
- 关于math头文件
math.h是c语言里的 cmath是c++里的 fabs是对小数求绝对值 abs是对整数绝对值 用math.h里的abs对小数不能求绝对值- - fabs对小数取绝对值 abs是对整数 现在要对一个 ...
- artDialog组件与iframe
背景 组件官网. 未用过的朋友可以先了解下. 当Content参数传递html元素时,官方的解释是: 备注:1.元素不是复制而是完整移动到对话框中,所以原有的事件与属性都将会保留 2.如果隐藏元素被传 ...
- C# 编写的Windows serice程序. 安装时出现异常!
初学Windows Service 程序的编写,按照MSDN上写了一个service! 遇到安装服务的错误, 能帮忙看下是什么原因吗? 下面是在命令行下的安装结果: 正在运行事务处理安装. 正在开始安 ...
- MFC中CTime获取日期时间的方法
MFC中CTime类的功能非常强大,可以获取年.月.日.小时.分钟.秒.星期等等,最最重要的是可根据需要去格式化.下面是具体的使用方式: ① 定义一个CTime类对象 CTime time; ② 得到 ...
- git 克隆一个新仓库
1.登陆git网页版,点击右上角创建新项目 2.更改project path(如果需要),填写project name,其它选项默认. 3.到本地要创建存放项目的目录下,打开git命令框,输入git ...