求一条SQL 想不出来了

快乐大法师 2015-01-26 02:46:44
ID DATE
1 2013/5/7
2 2013/8/6
3 2013/6/12
4 2013/12/1

一个表当中 ID 1 2 3 4 这样 时间 也应该是从小到大 现在想把 时间不是从小到大的找出来 比如 2 2013/8/6
和3 2013/6/12 就不对 把这两条找出来
...全文
424 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyangsoft 2015-01-26
  • 打赏
  • 举报
回复
分别以ID、DATE排序,然后编号,以编号比较两次的结果,不同ID、DATE的则是你要的
SELECT T1.ID, T1.DATE
  FROM (SELECT ID, DATE, ROWNUM R FROM TABLE_NAME ORDER BY ID) T1,--以id排序
       (SELECT ID, DATE, ROWNUM R FROM TABLE_NAME ORDER BY DATE) T2--以date排序
 WHERE T1.R = T2.R--按照编号连接
   AND T1.ID <> T2.ID --值不相等的
不写代码的钦 2015-01-26
  • 打赏
  • 举报
回复
确保你的date列是date类型或者格式标准的字符类型, 要不然不能正常排序 select t.d,t.date from (select d,date,rownum rn1, row_number() over(partition by d,date order by t.date) rn2 from tablename) t where rn1<>rn2;
hepe00 2015-01-26
  • 打赏
  • 举报
回复
;WITH CTE(ID,DATE) AS(
SELECT 1,'2013/05/07' UNION ALL
SELECT 2 ,'2013/08/06' UNION ALL
SELECT 3  ,   '2013/06/12' UNION ALL
SELECT 4   ,  '2013/12/01' UNION ALL
SELECT 5,'2014/01/22'
)
SELECT * FROM CTE AS A
WHERE EXISTS(SELECT 1 FROM CTE AS B WHERE A.DATE<B.DATE AND A.ID>B.ID)
bw555 2015-01-26
  • 打赏
  • 举报
回复
SELECT ID,DATE FROM(
select id,DATE,
lag(DATE,1,DATE)OVER (ORDER BY ID) as PREDATE
lead(DATE,1,DATE)OVER (ORDER BY ID) as NEXTDATE
from T
) WHERE PREDATE>DATE OR NEXTDATE<DATE

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧