Sql 如何比较组中的行?

Sql 如何比较组中的行?,sql,oracle,group-by,Sql,Oracle,Group By,我有如下表格: INS_SEQ | NAME | DATE ----------------------------- 1 | willy | 15/11/10 2 | zoe | 15/11/20 3 | willy | 15/11/20 4 | willy | 15/11/10 5 | willy | 15/11/21 6 | zoe | 15/11/17 7 | willy

我有如下表格:

 INS_SEQ |  NAME |     DATE
-----------------------------
       1 | willy | 15/11/10
       2 |   zoe | 15/11/20
       3 | willy | 15/11/20
       4 | willy | 15/11/10
       5 | willy | 15/11/21
       6 |   zoe | 15/11/17
       7 | willy | 15/11/12
       8 |   zoe | 15/11/20
       9 |   zoe | 15/11/30
... and other values ...
按名称列分组返回:

 INS_SEQ |  NAME |     DATE
----------------------------
       1 | willy | 15/11/10
       3 | willy | 15/11/20
       4 | willy | 15/11/10
       5 | willy | 15/11/21
       7 | willy | 15/11/12
       2 |   zoe | 15/11/20
       6 |   zoe | 15/11/17
       8 |   zoe | 15/11/20
       9 |   zoe | 15/11/30
我希望得到一个结果,即对于相同的值名称,前一个日期大于下一个日期,换句话说,我希望看到满足前一个插入日期的行小于相同的名称。 如何实现

我的预期产出是:

 NAME |     DATE
-----------------
willy | 15/11/20
willy | 15/11/21
  zoe | 15/11/20
  zoe | 15/11/17
  zoe | 15/11/30

首先,您必须编写一个查询来查找不符合顺序的日期,然后确保不包含同名的最后一条记录

-- Finding dates which are not in order
(SELECT * FROM CompareRows  C1 WHERE EXISTS 
   (SELECT * FROM CompareRows  C2 
     WHERE C2.ID < C1.ID
       AND C2.OrderDate < C1.OrderDate
       AND C2.Name = C1.Name))

 EXCEPT
 -- Not including last record with same name
(SELECT C1.*
FROM CompareRows C1 LEFT JOIN CompareRows C2
 ON (C1.name = C2.name AND C1.ID < C2.ID)
WHERE C2.ID IS NULL)
这是现场演示

按日期列排序,但不包括值​​在其他日期中,如果不符合比较算法,则不知道从组中提取了多少行,您希望对行1“Willy 15/11/10”这样的行执行什么操作?如果您希望每个唯一日期每个名称显示一次,则使用:select distinct name,date from table。如果希望对其进行排序,则添加order by,例如:order by name,date我希望稍后显示添加到表中的行,对于错误类型为,上一个日期比下一个日期大。在第二列中,行按组排序,我想得到的行不符合方案,即有人在同一组中插入上一个日期的旧数据行,我应该给你们其他的栏目,这样你们就可以理解它是什么了。我明天会尝试,到时候我可以查看表中的其他栏目,并做出一个比较example@wsmx,如果你明天能提供更多的信息会有帮助的,非常感谢你的关注,我的问题还不完整,很可能有一个键可以一个接一个地标识插入项,我需要对名称进行分组,然后在较早的日期之后比较有问题的keyI Update数据。如果这是要求,您的输出不应该有Zoe 15/11/17和Zoe 15/11/30,因为它们的上一个日期不大于下一个日期。听起来好吗?