2015年8月11日

计算从A地出发到各个地方的路径及距离

摘要: 数据库环境:SQL SERVER 2005 如题,现有bus表数据如下,dstart是起点,dend是终点,distance是两地的距离。求从A地出发到各个地方的距离。有经验的人一看,就知道题目关于树形查询的。SQL SERVER 2005数据库没有提供树形查询相关的函数,因此,可以通过CTE递归实... 阅读全文

posted @ 2015-08-11 18:06 ToBeHJH 阅读(376) 评论(3) 推荐(1) 编辑

2015年8月10日

dense_rank()+hash提示改写优化SQL

摘要: 数据库环境:SQL SERVER 2005今天看到一条SQL,返回10条数据,执行了50多S。刚好有空,就对它进行了优化,优化后1S出结果。先看下原始SQLSELECT t1.line_no , MAX(sat100.confrim_date) confrim_date , ... 阅读全文

posted @ 2015-08-10 21:40 ToBeHJH 阅读(750) 评论(0) 推荐(1) 编辑

2015年8月8日

查询同一组的最大最小值及明细

摘要: 数据库环境:Oracle11g现有某监测站的监测数据如下表。要求:查询出每个测站的水位最大最小值及最大最小值对应的时间,如果最大、最小值存在重复,则只显示重复数据中最新时间的那条数据。实现思路:根据测站和水位分组,按最新时间排序,有重复的只取最新时间的数据分别求得最大、最小值的所在数据行,然后uni... 阅读全文

posted @ 2015-08-08 13:27 ToBeHJH 阅读(954) 评论(0) 推荐(0) 编辑

2015年8月6日

枚举N行N列的自然数列

摘要: 数据库环境:SQL SERVER 2005现有一个需求,要枚举1-50个自然数,分10行5列展示。如图,解题思路:1.利用数字辅助表,枚举1-50的自然数列2.将数字集进行行转列,对5求余作为转列的条件,并按照整除5分组SQL实现/*枚举1-50的自然数列*/WITH x0 ... 阅读全文

posted @ 2015-08-06 21:05 ToBeHJH 阅读(410) 评论(2) 推荐(0) 编辑

计算多个订单的核销金额

摘要: 数据库环境:SQL SERVER 2005下图是一张订单明细表,现有金额要1700,根据订单单号的顺序依次对订单金额进行核销。到支付订单6时,支付金额不足,只能支付200,后面订单的核销金额为0。1.基础数据准备CREATE TABLE #t ( id INT ,dingdan VARCHAR(20... 阅读全文

posted @ 2015-08-06 18:55 ToBeHJH 阅读(999) 评论(2) 推荐(0) 编辑

2015年7月27日

根据指定时间找出最接近的预约时间

摘要: 数据库环境:SQL SERVER 2008R2有用户表和预约时间表如下:用户表预约时间表要求得到如下结果有以下限制条件:1.有预约时间大于等于今天的,取最早的日期2.没有大于今天的预约时间,取过去预约时间最近的一条3.没有预约时间的,则预约时间显示为NULL初看题目时,觉得很简单,用分析函数整一下就... 阅读全文

posted @ 2015-07-27 20:27 ToBeHJH 阅读(876) 评论(0) 推荐(0) 编辑

2015年7月24日

SQL求差集

摘要: 数据库环境:SQL SERVER 2008R2Sql Server有提供求集合差集的函数——EXCEPT。先看看EXCEPT的用法,{ | ( ) } { EXCEPT }{ | ( ) }从 EXCEPT 操作数左边的查询中返回右边的查询未返回的所有非重复值。上面是摘自MSDN对EXCEP... 阅读全文

posted @ 2015-07-24 14:52 ToBeHJH 阅读(2200) 评论(0) 推荐(1) 编辑

2015年7月20日

SQL打印全年日历

摘要: 数据库环境:SQL SERVER 2008R2我之前有写过打印本月日历的SQL,里头有详细的说明。具体请参考前面的博文——生成本月日历。全年日历只是在本月日历的基础上加了月信息,并按月份分组求得。下面直接分享SQL/*基础数据:年初日期,全年有多少天*/WITH x0 AS ... 阅读全文

posted @ 2015-07-20 17:58 ToBeHJH 阅读(790) 评论(2) 推荐(1) 编辑

2015年7月19日

将一列中多行相同的值只显示在一行

摘要: 数据库环境:SQL SERVER 2008R2需求如题,左图为初始数据,右图是已实现需求的数据展示 简单说下我的实现思路1.按id、name排序给原始数据生成行号2.用递归判断上下行的id是否相等,第一次出现计数器初始值为1,后面再出现则计数器+13.对步骤2中生成的结果集再处理,计数器为1的id不... 阅读全文

posted @ 2015-07-19 19:25 ToBeHJH 阅读(1702) 评论(5) 推荐(0) 编辑

行转列简单应用

摘要: 数据库环境:SQL SERVER 2008R2在SQL群看到这样的需求(截图),和对应的建表语句下面是建表语句和初始化数据CREATE TABLE T ( 日期 DATE, 数量 NUMERIC(18, 2) )INSERT INTO TVALUES ( '2015-01-01', 10 ), ... 阅读全文

posted @ 2015-07-19 10:20 ToBeHJH 阅读(466) 评论(0) 推荐(0) 编辑

导航