SQL> select * from aaa;
ID SEQ_ID NAME
---------- ---------- --------------------
1 1 A
1 2 A
1 3 A
2 1 B
2 2 B
3 1 C
3 2 C
3 3 C
3 4 C
9 rows selected
SQL>
SQL> SELECT *
2 FROM AAA A
3 WHERE A.SEQ_ID = (SELECT MAX(B.SEQ_ID) FROM AAA B WHERE B.ID = A.ID)
4 /
ID SEQ_ID NAME
---------- ---------- --------------------
1 3 A
2 2 B
3 4 C
www.cnoug.org 论坛 yesl
TOP N中的TOP1,(依需要选用rank,dense_rank,row_number)
SELECT ID, SEQ_ID, NAME
FROM (SELECT ID,
SEQ_ID,
NAME,
RANK() OVER(PARTITION BY ID ORDER BY SEQ_ID DESC NULLS LAST) DRN
FROM TA)
WHERE DRN = 1
SQL> SELECT ID, SEQ_ID, NAME
2 FROM (SELECT ID,
3 SEQ_ID,
4 NAME,
5 RANK() OVER(PARTITION BY ID ORDER BY SEQ_ID DESC NULLS LAST) DRN
6 FROM AAA)
7 WHERE DRN =1
8 /
ID SEQ_ID NAME
---------- ---------- --------------------
1 3 A
2 2 B
3 4 C
具体的就不说,下面谈谈这个 Nulls last ,
select v.id,
v.projectyear,
p.oacode,
p.oapublishdate,
dense_rank() OVER(PARTITION BY V.ID, V.projectyear ORDER BY TO_DATE(P.APPLYDATE, 'YYYY-MM-DD HH24:MI:SS') DESC NULLS LAST) DRN
from (select F_GETPROJECTDESIGBINDID(ID) bindid, id, projectyear
from V_GETSUPER) v,
PM_OADATAPROTOCOL_PM p
where v.bindid = p.PMBIZCODE
AND P.PMBIZTYPE = 'DESIGN_DESIGNAUDITING'
AND P.FILETYPE = 'OAFileType0001'
--------------------------------------------------------------------
以上这段代码始终把 null放在最前面。诶;
最后解决方案,在外面再套一层,在里面转date后,再外面order by;
----------------------------------------------------------------------
SELECT ID,projectyear,oacode,oapublishdate,rank() OVER(PARTITION BY ID, projectyear
ORDER BY APPLYDATE DESC NULLS LAST
) DRN,APPLYDATE,APPID FROM (
select v.id,
v.projectyear,
p.oacode,
p.oapublishdate,
TO_DATE(oapublishdate, 'YYYY-MM-DD HH24:MI:SS') APPLYDATE,
P.APPID
from (select F_GETPROJECTDESIGBINDID(ID) bindid, id, projectyear
from V_GETSUPER) v,
PM_OADATAPROTOCOL_PM p
where v.bindid = p.PMBIZCODE
AND P.PMBIZTYPE = 'DESIGN_DESIGNAUDITING'
AND P.FILETYPE = 'OAFileType0001' )
------------------------------
为什么不考虑第一种方案呢,那真是浮云啊。。。。
因为他用了2次表。。。我的结果集都是经过千辛万苦算出来的,我还怎么会舍得让他使用2次啊。。。
---------------下午了,好多地方要用了,看来治标不治本啊;;;;
没办法了,只能出杀手锏了
CREATE OR REPLACE VIEW V_GETLAST_PM AS
SELECT OACODE, OAPUBLISHDATE, PMBIZCODE, PMBIZTYPE, FILETYPE
FROM (SELECT OACODE,
OAPUBLISHDATE,
PMBIZCODE,
PMBIZTYPE,
FILETYPE,
RANK() OVER(PARTITION BY PMBIZCODE ORDER BY APPLYDATE DESC NULLS LAST) DRN
FROM (SELECT PMBIZCODE,
P.OACODE,
P.OAPUBLISHDATE,
TO_DATE(OAPUBLISHDATE, 'YYYY-MM-DD HH24:MI:SS') APPLYDATE,
P.PMBIZTYPE,
P.FILETYPE
FROM PM_OADATAPROTOCOL_PM P))
WHERE DRN = 1
此视图闪亮登场,为什么还不用第一种方法呢;原来是连接啊。。。
如果这样用连接,nul 是不会等于null的!!! 因此我的空数据会离我而去,因此我还是选择
早上的方式!!!新建了个视图而已啦;
分享到:
相关推荐
oracle 查询列最大值,例如有n例值,但是要找出这些列中的最大值。
### Oracle查询指定表的所有字段名和数据类型SQL 在Oracle数据库管理中,有时我们需要了解某个特定表的所有字段名称以及它们对应的数据类型等信息。这对于理解表结构、进行数据迁移或编写更为精确的SQL语句非常有...
在编程领域,寻找一个数组中的最大值和最小值是一项基础且重要的任务。这通常涉及到遍历数组元素并比较它们的大小。"最值"这个标签表明我们要探讨的是关于找到数值序列中的最高和最低数值的问题。这里,我们有一个...
在实际工作中,我们经常会遇到需要对数据表中的记录进行去重的情况,尤其是当某个字段作为唯一标识符时,我们希望能够基于这个字段获取最新的、唯一的或者汇总的数据记录。下面将详细阐述这一知识点。 ### SQL 去重...
根据给定文件的信息,本文将详细探讨如何在数据库表中查找和处理字段值重复的记录。主要内容包括使用三种方法:ROWID、GROUP BY 和 DISTINCT,来查找和删除表中的重复记录。 ### 一、ROWID 方法 #### 1.1 查找重复...
### PGSQL统计一个数据库所有数据库空字段的函数 在PostgreSQL(简称PGSQL)中,有时...通过以上步骤,我们可以在PGSQL中有效地统计所有表中的空字段数量,并将结果展示在一个临时表中,方便进一步的数据分析和处理。
本文将深入探讨如何利用SQL语句实现对某一列所有字段中的特定字符进行替换的操作,这一过程通常用于数据清洗、格式调整或错误修正等场景。 ### SQL语句替换某列所有字段中的某个字符 #### 1. 基本概念与应用场景 ...
在MySQL学习过程中,掌握如何查询一个字段中相同属性的最大值是一项基本且重要的技能。这个问题的背景是解决腾讯面试中的一道题目,目的是找出学生各科成绩中的最高分。本篇文章将介绍两种方法来实现这个目标。 ...
2. **查询最大值**:在函数中,通过`SELECT TOP 1`查询当前表中学号的最大值,并将其存储在一个变量中。 3. **处理无记录情况**:如果表中尚无记录,则函数返回预设的初始值`000001`。 4. **计算下个值**:对于已有...
在Oracle数据库环境中,有时在尝试跨版本导入DMP(数据泵导出)文件时,可能会遇到“实际值最大值错误”。这种错误通常是由于数据类型、字段长度或字符集不匹配导致的。以下是对该问题的详细分析和解决方法: 1. **...
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...
在Oracle数据库中,有时我们遇到一个特殊的查询需求,即字段中的值是以逗号分隔的字符串,我们需要根据每个单独的值来查询数据。在这种情况下,简单的`LIKE`查询无法满足需求,因为`LIKE`通常用于匹配模式,而不是...
要获取数据表的字段最大值,我们可以使用`DoCmd.RunSQL`命令来执行SQL查询,或者直接通过`TableDef`对象的`Fields`集合获取。 接下来,我们将重点讨论如何计算字段的最大值。假设我们有一个名为"Area"的字段,我们...
### 知识点一:查询表中的重复数据 在数据库管理中,经常会遇到需要查找表中重复数据的情况。这可以通过多种方式实现,具体方法取决于所使用的数据库管理系统(DBMS)。在本案例中,主要介绍了通过以下几种方法来...
文档中的示例代码显示了如何在一个包含混合类型(如字符串和数值)的表中执行查询,并通过不同的SQL Server版本(2000与2005)来实现对特定字段的聚合操作。 ### SQL Server 2000 版本动态字段查询 #### 1. 创建表...
如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE地理数据库数据或是ArcIMS要素类或ArcIMS影象服务子层中的数据,则不需要将字段名括起,如:AREA ...
数据透视表(Pivot Table)源自数据库中的透视查询,是一种交互式的表格,用户可以通过拖拽字段来改变数据的排列方式和汇总方法。其核心组成部分包括行标签、列标签、值和筛选器。 2. 创建数据透视表: 在办公...
3. **条件查询**:脚本从`ITCND_NEWESTLOG`表中选择满足`SERIAL_NUMBER = 'cn770302l1'`条件的记录,并将转换后的`TOOLLIST`字段值赋值给`@val`变量。 4. **输出结果**:最后,使用`print`语句打印出`@val`变量中的...
本书首先介绍了数据透视表的基础,然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和...
在Oracle数据库中,查询和处理重复数据是一项常见的任务,尤其在数据清洗和数据整合的过程中显得尤为重要。本篇文章将详细介绍如何在Oracle中查询和删除重复数据。 首先,我们要明确什么是重复数据。在一个表中,...