2015年11月11日

日期计算

摘要: 数据库环境:Oracle 11g R2 好久没写博客了,主要是遇到的一些需求都是之前在博客里做过的,就懒得再整理了。题目:如果这个月第一个星期的天数 <=3天,那么这第一周要归为上一个月。 实现思路: 1.生成本年的所有日期和日期对应的月份,所在周 2.统计每个月份各周的天数 3.如果第一周的天数<... 阅读全文

posted @ 2015-11-11 21:14 ToBeHJH 阅读(677) 评论(0) 推荐(1) 编辑

2015年9月16日

自定义函数实现NULL值替换

摘要: 数据库环境:SQL SERVER 2005 有时候,想将查询查询数来的数据格式化一下,不希望显示NULL值,或者复制表的数据时,被插入的表不允许有NULL。我们可以通过ISNULL()函数或者COALESCE()函数对数据进行转换。 如果要转换的字段太多,不想一个个字段去转,是否有什么办法批量转... 阅读全文

posted @ 2015-09-16 18:37 ToBeHJH 阅读(1218) 评论(3) 推荐(0) 编辑

2015年9月14日

查询树形的根节点

摘要: 数据库环境:SQL SERVER 2005 有一个test表,其表结构及数据如下图1。其中,id是主键,mid是当前节点,pid是父节点。要求:查出每个节点的根节点,如图2所示。 分析:这需求实际上树形查询的扩展,我们可以先找到根节点,从根节点往下找到分支节点,再从分支节点往下找叶子节点... 阅读全文

posted @ 2015-09-14 21:34 ToBeHJH 阅读(1906) 评论(0) 推荐(0) 编辑

2015年9月11日

分解跨天的时间数据

摘要: 数据库环境:SQL SERVER 2005 在百度知道看到这道题目,原问题链接 MS SQL数据库关于时间循环如何处理跨天问题 有如下表: -----------------------------------------------------------------------------... 阅读全文

posted @ 2015-09-11 23:15 ToBeHJH 阅读(1775) 评论(0) 推荐(0) 编辑

通过自关联替代开窗函数实现SQL优化

摘要: 数据库环境:SQL SERVER 2005 我们平时都是通过开窗析函数来取代自关联,减少表扫描,从而优化SQL。今天,反其道而行,用自关联改写开窗函数。我们先来看一下SQL。 原SQL语句SELECT * FROM ( SELECT MIN(a.line_no) OVER ( PA... 阅读全文

posted @ 2015-09-11 10:33 ToBeHJH 阅读(2032) 评论(0) 推荐(0) 编辑

2015年9月10日

递归实现集合求解

摘要: 数据库环境:SQL SERVER 2005 在群里看到一道题,截图如下: 可能有些朋友还看不懂题目的意思,我们现在就来分析一下。假设有3种产品A、产品B、产品C,产品A和产品B存在替换关系如果产品A和产品B中任何一种产品和产品C存在替换关系,则它们就是一组。 实现思路:把存在替换关系的任意2种... 阅读全文

posted @ 2015-09-10 20:39 ToBeHJH 阅读(516) 评论(0) 推荐(0) 编辑

2015年9月8日

补充缺失日期及对应数据

摘要: 数据库环境:SQL SERVER 2008R2 有一个数据表,只有2个字段,一个是日期字段,另一个是数据字段,其中,日期字段的日期是不连续的。要求:补全日期,对应的数据为上一个日期的数据除于7。 现有数据如图1, 实现的效果如图2(数据太多,已省略部分) 实现思路: 1.用数字辅助表补... 阅读全文

posted @ 2015-09-08 21:59 ToBeHJH 阅读(2660) 评论(6) 推荐(1) 编辑

2015年9月6日

通过拆分字段优化SQL

摘要: 数据库环境:SQL SERVER 2008R2 今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下:SELECT SO_Order.fdate , SO_Order.fsnFROM so_order INNER JOIN so_orderite... 阅读全文

posted @ 2015-09-06 18:55 ToBeHJH 阅读(1357) 评论(4) 推荐(0) 编辑

2015年9月3日

left join 改写标量子查询

摘要: 数据库环境:SQL SERVER 2005 有一博彩的赔率是1:20,它有2张业务表:smuchs(投注表),lottery(开奖表)。smuchs表有3个字段,分别是sno(投注号码)、smuch(投注金额),stime(投注时间),lottery表有2个字段,分别是lno(开奖号码)、stim... 阅读全文

posted @ 2015-09-03 15:52 ToBeHJH 阅读(1882) 评论(0) 推荐(1) 编辑

对数据按组排序

摘要: 数据库环境:SQL SERVER 2005 有数据如图1,字段id是序号,id相同的为一组,createtime为创建时间。要求:将createtime为最新时间所在的组排在前面,同时,同一组内的数据按createtime降序排序。最终结果如图2所示 实现思路: 1.用分析函数取组内最大... 阅读全文

posted @ 2015-09-03 13:09 ToBeHJH 阅读(730) 评论(1) 推荐(1) 编辑

导航