这是一条SELECT语句里的打算要SELECT出来的某个字段
(
SELECT A.ADDRESS1
FROM PS_HM_TB_ADD_VW A
WHERE A.EMPLID = J.EMPLID
AND A.EFFDT = (
SELECT MAX(ED.EFFDT)
FROM PS_HM_TB_ADD_VW ED
WHERE ED.EMPLID = A.EMPLID
AND ED.EFFDT <= SYSDATE)) AS ADDRESS1
上面这一段是原来的代码,运行没问题。现在要要修改成如果他的国家是中国则地址这一字段赋空。
第一次运行没问题,但是如果修改数据库里的数据后(比如把ADDRESS1从上海路修改成北京路),整个这一条数据在最后的结果里就没了,请问是哪里的问题?
(
SELECT CASE WHEN A.COUNTRY='CHN' THEN '' ELSE A.ADDRESS1 END FROM PS_HM_TB_ADD_VW A
WHERE A.EMPLID = J.EMPLID
AND A.EFFDT = (
SELECT MAX(ED.EFFDT)
FROM PS_HM_TB_ADD_VW ED
WHERE ED.EMPLID = A.EMPLID
AND ED.EFFDT <= SYSDATE)) AS ADDRESS1
(
SELECT A.ADDRESS1
FROM PS_HM_TB_ADD_VW A
WHERE A.EMPLID = J.EMPLID
AND A.EFFDT = (
SELECT MAX(ED.EFFDT)
FROM PS_HM_TB_ADD_VW ED
WHERE ED.EMPLID = A.EMPLID
AND ED.EFFDT <= SYSDATE)) AS ADDRESS1
上面这一段是原来的代码,运行没问题。现在要要修改成如果他的国家是中国则地址这一字段赋空。
第一次运行没问题,但是如果修改数据库里的数据后(比如把ADDRESS1从上海路修改成北京路),整个这一条数据在最后的结果里就没了,请问是哪里的问题?
(
SELECT CASE WHEN A.COUNTRY='CHN' THEN '' ELSE A.ADDRESS1 END FROM PS_HM_TB_ADD_VW A
WHERE A.EMPLID = J.EMPLID
AND A.EFFDT = (
SELECT MAX(ED.EFFDT)
FROM PS_HM_TB_ADD_VW ED
WHERE ED.EMPLID = A.EMPLID
AND ED.EFFDT <= SYSDATE)) AS ADDRESS1
解决方案 »
- oracle的过程中for循环优化运行速度
- java连接oracle报异常,Io 异常: Got minus one from a read call
- oracle 10g2 在suse12.1安装时创建orcl数据库85%出错求解决
- 在数据库中存储大量文本的问题
- 如何用触发器做到两个不同的数据库之间的相同表的更新?
- oracle问题,求救!
- 怎样用原来的数据文件恢复数据?
- trigger,实现插入数据时其他字段的修改?怎么写
- 怎样清空回退段?
- “ORA-22990:LOB定位器无法扩展事务处理”是怎么会事,怎么解决
- forms 开发里面的diaplay item 和editors item各有什么作用
- 新手请教一个forms开发的问题
用DECODE()不更明了吗?
DECODE(A.COUNTRY,'CHN',NULL, A.ADDRESS1)
A.EMPLID = J.EMPLID
AND A.EFFDT = (
SELECT MAX(ED.EFFDT)
FROM PS_HM_TB_ADD_VW ED
WHERE ED.EMPLID = A.EMPLID
AND ED.EFFDT <= SYSDATE)