什么意思啊,你的条件那有那么复杂啊,
不就是
A1 = B1) AND (B4 〉A4)
AND (B2 = A2)
AND (B3 = A3) 么
不就是
A1 = B1) AND (B4 〉A4)
AND (B2 = A2)
AND (B3 = A3) 么
解决方案 »
- top 等待事件为 gc current block 2-way,求调优建议
- oracle 关于rowid 一条语句怎么写
- 表索引问题
- 求一动态sql语句
- 各位大哥大姐好,求救BAT实现自动恢复的脚本.
- 急救:各位高手帮忙看看这个语句怎么写?
- 急问:XML入ORACLE库的问题 分不够尽管说
- 求助高手解决目前问题!
- 一个简单的问题
- 这条update语句总是报错,错误信息是:Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' [Microsoft][ODBC driver for Oracle]
- 菜鸟求救(二) 如何在oracle数据库中执行时间的查询?
- 怎样用随机数?
OR ((B2 is null) AND (A2 is null)) AND ((B2 is null) AND (A2 is not null ))
这样的条件,你再看看?是不是什么地方写错了?
B2等于null,A2等于null,并且不等于Null。
CREATE TABLE USRSZZZ.T1
(
F1 CHAR(1),
F2 CHAR(1),
F3 CHAR(1)
)
/F1 F2 F3
1 1 (null)
1 1 1
2 (null) (null)
3 3 (null)
4 4 4 你想得到后面4条,是吗?是这个需求吗?
1 (null) (null)
这样的数据,需要显示吗?
题目的意思是:(A1=B1 AND A4>B4) AND(条件1)AND (条件2),
条件1:就是B2与A2之间的关系:
满足条件的是:(B2=A2 )或 (B2是null且A2也是null )或(B2是null且A2不是null)
这里存在一个漏洞,就是当B表中记录比A表多时:B表中存在两条这样的记录:
A表:
A1=“001”,A2=“2”,A3=“3”,A4=100
B表:
B1=“001”,B2=“2”, A3=“3”,B4=120
B1=“001”,B2 is null, A3=“3”,B4=140
这样会查询出来两条记录,我本来只需要B2=“2”的记录????????????条件2:就是B3与A3之间的关系: 如条件1,也同样存在这个问题;谢谢各位!
过滤掉b1相同,b2 is null的结果数据。
select *
from a left outer join (select b1,max(b2) as b2,max(b3) as b3,max(b4) as b4 from b group by b1) c on a.a1=c.a1 and a4>c4 and (a2=c2 or c2 is null) and (a3=c3 or c3 is null);
你试一下,是不是能满足你的要求。
select *
from a left outer join (select b1,max(b2) as b2,max(b3) as b3,max(b4) as b4 from b group by b1) c on a.a1=c.b1 and a.a4>c.b4 and (a.a2=c.b2 or c.b2 is null) and (a.a3=c.b3 or c.b3 is null);
字段名 类型 长度 A1 char 20A2 varchar 50A3 varchar 50A4 decimal(20,6) 表B:字段名 类型 长度 B1 char 20B2 varchar 50B3 varchar 50B4 decimal(20,6)
不是很长啊 我们开发中有好多比这个长的。^_^
你们是做什么项目的?