数据库为Oracle,表A中:name和Date组成复合关键字
Name Date
mike 2-一月-2004
rose 1-二月-2004
john 7-一月-2004
mike 5-二月-2004
rose 5-一月-2004
假如我给定日期为:4-一月-2004,想求出mike和rose的最近一条记录,如表B
Name Date
mike 2-一月-2004
rose 5-一月-2004
也就是我想求出表A中,指定Name下,日期值与给定日期之差的绝对值最小的记录。不知各位理解我的意思没有?
这样的Sql语句该如何写?
Name Date
mike 2-一月-2004
rose 1-二月-2004
john 7-一月-2004
mike 5-二月-2004
rose 5-一月-2004
假如我给定日期为:4-一月-2004,想求出mike和rose的最近一条记录,如表B
Name Date
mike 2-一月-2004
rose 5-一月-2004
也就是我想求出表A中,指定Name下,日期值与给定日期之差的绝对值最小的记录。不知各位理解我的意思没有?
这样的Sql语句该如何写?
解决方案 »
- 寻找一个能替代TwebBrowser的控件
- delphi 百度空间验证码如何获取
- 看到网上有很多朋友问JPEG ERROR#54的,可是我这里是JPEG ERROR #68,这是怎么回事,有没有朋友也遇到过呢?
- delphi property的问题
- 动态链接库实现进程问题!~
- 如何判断我在EDIT里面输入的字符串中没有汉字?
- ADO修改不了access数据库
- 用TDBComboBox控件与数据库中的某个字段直接连接,为什么只能取出一条记录?
- 一个很简单的动态生成控件问题,麻烦各位进来帮帮忙哟,小妹在线等待!
- 如果通过给StringGrid发送一个消息使它自动滚动.....
- 二次添加
- DCOM能否在internet上使用?
select max(date),name from a where date<= xxxx group by name
max是指date的最大值,不知道oracle中用什么函数
比如:A表中有mike的两条记录,但我只取( mike 2-一月-2004 )这一条,因为这一条中的Date值距离我指定的( 4-一月-2004 )最近,而(mike 5-二月-2004 )中的Date距离(4-一月-2004 )较远,就不取这条记录。
请问应该怎样写Sql语句呢?
(select t.Name, min(DateBetween) as DateBetween from
(select Name, Date,
greatest(Date, to_date('2003-06-12','yyyy-mm-dd'))-
least(Date,to_date('2003-06-12','yyyy-mm-dd')) as DateBetween
from A) t
group by t.Name) t2,
(select Name, Date,
greatest(Date, to_date('2003-06-12','yyyy-mm-dd'))-
least(Date,to_date('2003-06-12','yyyy-mm-dd')) as DateBetween
from A) t3
where t3.Name=t2.Name and t2.DateBetween =t3.DateBetween
如果有的话
select min(绝对值(差值(日期,指定日期))),name from a group by name
Query1.sql.add('select * from table where To_Date('''+ string变量+''',''yyyymmdd'')');