当前位置:  开发笔记 > 数据库 > 正文

使用单个SQL执行此操作

如何解决《使用单个SQL执行此操作》经验,为你挑选了1个好方法。

我有一个看起来像这样的表:

替代文字

行按CLNDR_DATE DESC排序.

我需要找到与突出显示的行对应的CLNDR_DATE,换句话说:
找到最顶层的行WHERE EFFECTIVE_DATE是非NULL,并返回该组的最后一行的CLNR_DATE.

通常我会打开一个光标并从上到下循环,直到我在EFFECTIVE_DATE中找到NULL.然后我会知道我要查找的日期是CLNDR_DATE,在上一步获得.

但是,我想知道使用单个SQL是否可以实现相同的目标?



1> Jonathan Lon..:

警告:无论如何不是DBA.;)

但是,快速,未经测试的刺伤:

SELECT min(CLNDR_DATE) FROM [TABLE]
WHERE (EFFECTIVE_DATE IS NOT NULL)
  AND (CLNDR_DATE > (
    SELECT max(CLNDR_DATE) FROM [TABLE] WHERE EFFECTIVE_DATE IS NULL
  ))

假设您希望第一个 CLNDR_DATE EFFECTIVE_DATE之后没有.

如果你想在第一个之后没有第一个,请将子查询更改为使用min()而不是max().

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有