12
返回列表 发新帖
楼主: kangpengjie

请教一种场景SQL的写法

[复制链接]
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
11#
发表于 2017-3-1 11:08 | 只看该作者



如下代码在所有主流数据库都可以运行, 测试一下如果结果有问题详细说明,用特殊简单的数据举例

select id,
          decode(grouping(id) || grouping(name), '00', name, '01', id) name
from a
group by rollup(id, name)
having grouping(id) || grouping(name) <> '11';


使用道具 举报

回复
论坛徽章:
1
复活蛋
日期:2012-05-21 14:39:53
12#
 楼主| 发表于 2017-3-1 11:22 | 只看该作者
哦,明白了,多谢

使用道具 举报

回复
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
13#
发表于 2017-3-1 14:35 | 只看该作者
bell6248 发表于 2017-3-1 11:08
如下代码在所有主流数据库都可以运行, 测试一下如果结果有问题详细说明,用特殊简单的数据举例

se ...


这种思路学习了。在这种思路的指引下,另外一种完成的方法:

select id,nvl(name,id)
from a
group by grouping sets((id,name),(id));
只是不知道grouping sets 是否是ORACLE所特有的?

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
14#
发表于 2017-3-1 19:31 | 只看该作者
bfc99 发表于 2017-3-1 14:35
这种思路学习了。在这种思路的指引下,另外一种完成的方法:

select id,nvl(name,id)

这是标准的 都支持

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表