用到如下语句:
select A,B,C from tableName where
TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '600' and A = (select max(A) from tableName where B = '600')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '603' and A = (select max(A) from tableName where B = '603')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '606' and A = (select max(A) from tableName where B = '606')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '609' and A = (select max(A) from tableName where B = '609')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '611' and A = (select max(A) from tableName where B = '611')上述代码中,重复部分比较多,能否简化??
select A,B,C from tableName where
TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '600' and A = (select max(A) from tableName where B = '600')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '603' and A = (select max(A) from tableName where B = '603')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '606' and A = (select max(A) from tableName where B = '606')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '609' and A = (select max(A) from tableName where B = '609')
or TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B = '611' and A = (select max(A) from tableName where B = '611')上述代码中,重复部分比较多,能否简化??
解决方案 »
- oracle两行相减
- 求一SQL代码检查工具,最好是免费的,多谢!
- Oracle ERP二次开发工具
- 问一个简单的sql语句啊!
- TYPE t_c_partition_id IS TABLE OF NUMBER(3) INDEX BY BINARY_INTEGER是什么意思
- 不同表空间,不同用户之间如何导数?
- 建立倒序索引为什么会不起作用
- 我用PL/SQL DEVELOP把存储过程导出来了,但我不知道怎样可以把它导到数据库里,如果要拷贝到sql/plus里执行的话,文字太长了,要分很多次
- 请问oracle7.0的客户端能连接主机上的oracle9i数据库吗
- 连接错误问题!帮帮小妹吧
- 【紧急求救】PL/SQL数据库导入问题!~高手请进~急啊!在线等
- c++ oracle数据库修改的问题?
TO_CHAR(A,'yyyy-MM-dd') like '2009-11-09' and B in('600','603','606','609','611') and A = (select max(A) from tableName where B in('600','603','606','609','611'))
TO_CHAR(A,'yyyy-MM-dd') = '2009-11-09'
and b in('600','603','606','609','611')
and a=(select max(a) from tablename where b=a.b)
select a.*,rank()over(partition by b order by a desc)rk
from tablename a)
where rk=1
and a>=date'2009-11-9' and a<date'2009-11-10'
and b in('600','603','606','609','611')
FROM TABLENAME A
WHERE TO_CHAR(A, 'YYYY-MM-DD') = '2009-11-09'
AND B IN ('600', '603', '606', '609', '611')
AND A = (SELECT MAX(A)
FROM TABLENAME
WHERE B = A.B
AND TO_CHAR(A, 'YYYY-MM-DD') = '2009-11-09')
到现在也没搞清楚,楼主到底是什么意思?还有表中列值的唯一性是否存在。
建议描述下意图,呵呵。