楼主: junsansi

[精华] 单条SQL语句实现复杂逻辑几例~~

[复制链接]
论坛徽章:
0
61#
发表于 2009-9-22 19:22 | 只看该作者
多谢了 收益很多

使用道具 举报

回复
论坛徽章:
0
62#
发表于 2010-1-26 19:22 | 只看该作者
xiexie

使用道具 举报

回复
论坛徽章:
0
63#
发表于 2010-3-24 15:30 | 只看该作者
第二题不知这样是否更简单些
先找出后一行的数据,在找出后两行的数据,并与当前行进行比较,如果都相等说明该行的后两行数据都相等,再找出后两行数据
select  t.*
from
(select t.* ,rownum rn from tmp2 t) t
where t.rn in
(select t.rn
from
(select t.*,rownum as rn,decode(t.a,lead(t.a,1,0)over(order by rownum),1,0) as nrow ,decode(t.a,lead(t.a,2,0)over(order by rownum),1,0) as nnrow from tmp2 t) t
where t.nrow = 1 and t.nnrow = 1)
or  t.rn in
(select t.rn+1
from
(select t.*,rownum as rn,decode(t.a,lead(t.a,1,0)over(order by rownum),1,0) as nrow ,decode(t.a,lead(t.a,2,0)over(order by rownum),1,0) as nnrow from tmp2 t) t
where t.nrow = 1 and t.nnrow = 1)
or  t.rn in
(select t.rn+2
from
(select t.*,rownum as rn,decode(t.a,lead(t.a,1,0)over(order by rownum),1,0) as nrow ,decode(t.a,lead(t.a,2,0)over(order by rownum),1,0) as nnrow from tmp2 t) t
where t.nrow = 1 and t.nnrow = 1)

使用道具 举报

回复
tongwenbin 该用户已被删除
64#
发表于 2010-3-24 16:07 | 只看该作者

不错,学习了

谢谢分享!

使用道具 举报

回复
论坛徽章:
0
65#
发表于 2010-3-24 17:10 | 只看该作者
第三题楼主的解题思路只适用于月份,如果要求求解天数,这种思路就不太合适了,推荐这种方法:
将员工的start_date排序 ORDER BY start_date
添加一列 前一行的start_date 作为start_date_p 这样start_date >= start_date_p
添加一列 前n行的end_date中最大值作为end_date_p
这样就可以分为三种情况
start_date >= end_date_p 工作的天数是 end_date - start_date
end_date >= end_date_p AND start_date < end_date_p 工作的天数是 end_date - end_date_p
end_date <= end_date_p 工作的天数是 0

使用道具 举报

回复
论坛徽章:
4
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442010新春纪念徽章
日期:2010-03-01 11:19:502011新春纪念徽章
日期:2011-02-18 11:43:362012新春纪念徽章
日期:2012-01-04 11:53:29
66#
发表于 2010-3-24 18:06 | 只看该作者
谢谢

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:虎
日期:2009-01-07 17:29:302010广州亚运会纪念徽章:卡巴迪
日期:2011-04-17 16:39:06灰彻蛋
日期:2011-06-18 13:42:50ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51复活蛋
日期:2011-12-27 17:46:382012新春纪念徽章
日期:2012-01-04 11:54:46ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19
67#
发表于 2010-6-23 16:50 | 只看该作者
学习,学习

使用道具 举报

回复
论坛徽章:
1682
九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-27 15:37:10九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55九尾狐狸
日期:2012-09-19 11:12:55玉石琵琶
日期:2014-06-26 16:52:29玉石琵琶
日期:2014-06-26 16:52:29
68#
发表于 2010-6-24 14:40 | 只看该作者
三思家的bb好可爱。。。

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04
69#
发表于 2011-11-7 22:57 | 只看该作者
THANKS

使用道具 举报

回复
论坛徽章:
2
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51ITPUB社区12周年站庆徽章
日期:2013-10-17 10:07:14
70#
发表于 2012-2-20 11:05 | 只看该作者
很有意思。。。

使用道具 举报

回复

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

本版积分规则 发表回复

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