可以参考以下几种方法:
1、sqlserver的语法:
select * from table t where t.date = ( select min( date ) from table t1 where t1>= getdate() )
2、在oracle中可写成如下:
select * from 表 where RQ in (select min(RQ) from 表 where RQ>sysdate)
扩展资料:
SQL参考语句
增加列
Alter table table_name add column_name column_type [default 默认值]--在表中增加一列,[]内的内容为可选项
删除列
Alter table table_name drop column column_name--从表中删除一列
添加主键
Alter table tabname add primary key(col)
参考资料来源:百度百科-结构化查询语言
参考资料来源:百度百科-SQL语句大全
不同数据库有不同的写法,不过思路是一样的,就是字段的日期形式减去2008-12-20,然后取绝对值的最小值。找到这个最小值就可以了。枚举2个数据库的写法
MS SQL SERVER,
select * from table_name
where abs(column_name-convert(datetime,'20081220',112)) in (
select min(abs(column_name-convert(datetime,'20081220',112))) from table_name)
ORACLE
select * from table_name
where abs(column_name-to_date('20081220','yyyymmdd')) in (
select min(abs(column_name-to_date('20081220','yyyymmdd'))) from
table_name
)
注:column_name字段需要时日期类型,如果不是需要做转换
select a.* from表名 as a,
(select 物料,max(生效日期) as 最新生效日期 from 表名 group by 物料) as b
where a.物料=b.物料 and a.生效日期=b.最新生效日期
表名替换一下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)