欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求oracle语句-多谢

更新时间: 2014-01-05 02:14:05 责任编辑: Author_N1

 

求Oracle语句-谢谢
1.根据表AA中【OYA_BI】和【BI】 列关联更新列【OYA_NAME】的值
UPDATE AA SET OYA_NAME=
        (SELECT  DISTINCT A.NAME  FROM AA A WHERE RTRIM(OYA_BI)=RTRIM(A.BI) )
不起作用,执行完,NAME列都为空,而实际上OYA_BI和BI能关联到数
-------------------
BI  NAME  OYA_BI  OYA_NAME
SS  BING   CC
CC  ABCD   DD

关联结果:
BI  NAME  OYA_BI  OYA_NAME
SS  BING   CC      ABCD
--------------------

2. 将表AA中按KATAMEI,EDP_SKKR_SYK 分组KOTEI_FLOW_RNBN值最大的【ZB】列复制1。

UPDATE AA  SET ZB='1'
FROM AA A, 
( SELECT KATAMEI,EDP_SKKR_SYK ,MAX(KOTEI_FLOW_RNBN)KOTEI_FLOW_RNBN FROM ALPSSHU2  
       GROUP BY KATAMEI,EDP_SKKR_SYK  ORDER BY KATAMEI, EDP_SKKR_SYK)B
WHERE A.KATAMEI=B.KATAMEI AND A.KOTEI_FLOW_RNBN=B.KOTEI_FLOW_RNBN AND A.EDP_SKKR_SYK=B.EDP_SKKR_SYK
怎么转化为ORACLE ,写不出来。

谢谢各位大侠。
--参考方法--
第一个:   
MERGE INTO AA T1 USING AA T2 ON(T1.OYA_BI=T2.BI) WHEN MATCHED THEN UPDATE SET T1.OYA_NAME=T2.NAME;

第二个语句你可以仿照这个
--参考方法--
第一个你把所有的列名前加上别名试试?公司没练习的server,不好测。
--参考方法--
UPDATE AA A1
   SET OYA_NAME =
       (SELECT DISTINCT A.NAME
          FROM AA A2
         WHERE RTRIM(A2.OYA_BI) = RTRIM(A1.BI))
UPDATE AA A
   SET ZB = '1'
 where exists (select 1
          from (SELECT KATAMEI,
                       EDP_SKKR_SYK,
                       MAX(KOTEI_FLOW_RNBN) KOTEI_FLOW_RNBN
                  FROM ALPSSHU2
                 GROUP BY KATAMEI, EDP_SKKR_SYK
                 ORDER BY KATAMEI, EDP_SKKR_SYK) B
         WHERE A.KATAMEI = B.KATAMEI
           AND A.KOTEI_FLOW_RNBN = B.KOTEI_FLOW_RNBN
           AND A.EDP_SKKR_SYK = B.EDP_SKKR_SYK)




--参考方法--
引用:
谢谢,第2个已经OK了,但第1个还有点小问题。

UPDATE AA A1    SET OYA_NAME =        (SELECT DISTINCT A.NAME          FROM AA A2          WHERE RTRIM(A2.OYA_BI) = RTRIM(A1.BI)) 

执行报"单行子查询返回多个行",但是已经用了DISTINCT 了啊?

这说明满足条件的有多个值,distinct对这方面就没作用了,你只能在子查询中加多一些关联条件来过滤
--参考方法--
 

引用:
Quote: 引用:

谢谢,第2个已经OK了,但第1个还有点小问题。

UPDATE AA A1    SET OYA_NAME =        (SELECT DISTINCT A.NAME          FROM AA A2          WHERE RTRIM(A2.OYA_BI) = RTRIM(A1.BI)) 

执行报"单行子查询返回多个行",但是已经用了DISTINCT 了啊?

这说明满足条件的有多个值,distinct对这方面就没作用了,你只能在子查询中加多一些关联条件来过滤


是这么个意思。返回值不唯一
--参考方法--
如果结果不唯一
这个要你来决定取哪条了,是任一条还是什么其他条件,再加进去就行了
--参考方法--
你举的例子不对,这样的情况用一方法是可以update的
如果是:
BI  NAME  OYA_BI  
SS  BING  CC 
CC  ABCD   DD
cc  BING   bb

关联结果:
BI  NAME  OYA_BI  OYA_NAME
SS  BING   CC      abcd or bing ?
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:05
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7304/
本文WWW.DOC100.NET DOC100.NET版权所有。