INSERT INTO A1(.......)
(SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
AND {
A2.Z='C'时
A2.S=A3.E
AND A3.F='0'or'2' A2.Z='P'时
A2.T=A3.E
AND A3.F='0'or'2'
}
)整体意思如上。
关键是 {} 中的不会写,或者 我的整体框架结构写错了,也可以重新整体写(用一括sql写)。
(SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
AND {
A2.Z='C'时
A2.S=A3.E
AND A3.F='0'or'2' A2.Z='P'时
A2.T=A3.E
AND A3.F='0'or'2'
}
)整体意思如上。
关键是 {} 中的不会写,或者 我的整体框架结构写错了,也可以重新整体写(用一括sql写)。
解决方案 »
- 这个sql执行效率为什么会是这样!
- oracle 10g pl/sql 行转列问题
- 未来日期问题
- 天哪.ORACLE的导入导出怎么这么难呀.
- 请高手指点:如何提高数据插入的速度,急
- select * from a where (rowid,oid,name,rundate) in (('...',2,'nn',null),(null,2...))类似这样的句子应该怎么写?主要是null值得应用
- 解决打过震荡波补丁之后oracle无法正常启动的问题
- 那位大虾,帮帮小峡我,谢谢
- 我装了oracle8.1.7personal的,现在想再装一个client的,怕冲突.
- Oracle查询问题
- 急!查询写不到,请帮助
- 请问那里有oracle免费的视频教程?多谢!
SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
AND A2.Z='C'
and A2.S=A3.E
AND A3.F='0'or'2'
union all
SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
A2.Z='P'
and A2.T=A3.E
AND A3.F in('0','2');
(SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
AND { ( case A2.Z
when C then A2.S=A3.E AND A3.F='0'or'2'
when P then A2.T=A3.E AND A3.F='0'or'2'
end )
}
)
(SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
AND (
(A2.Z='C' AND A2.S=A3.E AND A3.F IN ('0','2'))
OR
(A2.Z='P' AND A2.T=A3.E AND A3.F IN ('0','2'))
)
)
A3也是表。
我这样写了:
INSERT INTO A1(.......)
( SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
AND ((A2.Z='C' AND A2.S IN SELECT A3.E FROM A3 WHERE A3.F='0'or'2')
OR (A2.Z='P' AND A2.T IN SELECT A3.E FROM A3 WHERE A3.F='0'or'2')
)
在 PL/SQL 试了不行。望多多指教。 经理下午要的。谢谢。
(SELECT .......
FROM A2,A3
WHERE A2.X='1'
AND A2.Y='1'
AND (
(A2.Z='C' AND A2.S=A3.E )
OR
(A2.Z='P' AND A2.T=A3.E )
)
AND A3.F IN ('0','2')
)
您的办法我试了一下,在 PL/SQl 运行通过。先送出100分。
烦您确认一下逻辑对不。
在线等。
AND (
(A2.Z='C' AND A2.S=A3.E )
OR
(A2.Z='P' AND A2.T=A3.E )
)
在select 后使用distinct试试。
在select 后使用了distinct 会把本来表中重复的记录也给删除了呀!????
逻辑如下:
从 表A2 选出所有字段插入 表A1 中(表A1和表A2的各个字段类型等同)。
选择表A2中字段的条件为:
一、表A2.字段1 = '1'
二、表A2.字段2 = '1'
三、表A2.字段3 = 'C' 时
A2.字段4 = 表A3.字段1 and 表A3.字段2 = '0' or '2'
表A2.字段3 = 'P' 时
A2.字段5 = 表A3.字段1 and 表A3.字段2 = '0' or '2'
以上是详细设计书上写的。要求用一括Sql(insert into ....select....from . where...)。
(SELECT .......
FROM A2 a
WHERE a.X='1'
AND a.Y='1'
AND (
(a.Z='C' AND (select count(*) from A3 where A3.E=a.S and A3.F in ('0','2'))>0)
OR
(a.Z='P' AND (select count(*) from A3 where A3.E=a.T and A3.F in ('0','2'))>0)
)
)
试试这个
INSERT INTO A1(.......)
(SELECT .......
FROM A2
WHERE A2.X='1'
AND A2.Y='1'
AND (exists (select 1 from a3
where a2.z = 'c'
and a2.s = a3.e
and a3.f in (0,2))
or exists(select 1 from a3
where a2.z = 'p'
and a2.t = a3.e
and a3.f in (0,2))
)
)
...
AND (
(((A2.Z='C' AND A2.S=A3.E ) OR (A2.Z='P' AND A2.T=A3.E ))
and A2.S<>A2.T
)
or
(
A2.S=A3.E and A2.S=A2.T
)
)