首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PL/SQL将多行复制/插入到另一个表的一行中

PL/SQL将多行复制/插入到另一个表的一行中
EN

Stack Overflow用户
提问于 2012-07-24 22:15:41
回答 1查看 3.5K关注 0票数 1

我对SQL比较陌生,所以请原谅我的无知……

我有三张桌子,SRS_CAP,SRS_IPF和SRS_URA。

我想将数据从SRS_IPF复制到SRS_URA,其中SRS_IPF的(某些)主键等于SRS_CAP的主键。

具体地说,这就是我的问题所在,我想在SRS_URA中将多行从SRS_IPF复制到一行。下面的脚本说明了我想要实现的东西,但并不是为了工作--必须有一个更有效的方法(而且是一个实际有效的方法!):

代码语言:javascript
复制
INSERT INTO srs_ura
        (ura_stuc, ura_seqn, ura_stat, ura_name, ura_orgn, ura_add1)
SELECT ipf_ipuc, mySEQ, 'GP',
      (SELECT ipf_valu
                  FROM srs_ipf
                 WHERE ipf_code = 'IPQ_REF1TIT'
                   AND ipf_ippc = CAP_MCRC
                   AND ipf_ipuc = CAP_STUC),
      (SELECT ipf_valu
                  FROM srs_ipf
                 WHERE ipf_code = 'IPQ_REF1ORG'
                   AND ipf_ippc = CAP_MCRC
                   AND ipf_ipuc = CAP_STUC,
      (SELECT ipf_valu
                  FROM srs_ipf
                 WHERE ipf_code = 'IPQ_REF1AL1'
                   AND ipf_ippc = CAP_MCRC
                   AND ipf_ipuc = CAP_STUC)
 FROM srs_ipf, srs_cap
 WHERE ipf_ippc = CAP_MCRC AND ipf_ipuc = CAP_STUC; 

正如您所看到的-我想重复地将ipf_valu字段插入到srs_ura中的多个列中,但是srs_ipf中同一行的ipf_code有所不同。

因此,我的问题是,为了实现上述目标,我应该研究SQL编程的哪个领域?

我还有更多关于自动排序和NCLOBs的问题,但我将在稍后解决这些问题。我在Oracle服务器上。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 22:23:34

此select是否返回您想要插入的行?

代码语言:javascript
复制
SELECT ipf_ipuc, /*mySEQ,*/ 'GP',
       MAX(CASE WHEN ipf_code = 'IPQ_REF1TIT' THEN ipf_valu END),
       MAX(CASE WHEN ipf_code = 'IPQ_REF1ORG' THEN ipf_valu END),
       MAX(CASE WHEN ipf_code = 'IPQ_REF1AL1' THEN ipf_valu END)
 FROM srs_ipf, srs_cap
 WHERE ipf_ippc = CAP_MCRC AND ipf_ipuc = CAP_STUC
   AND ipf_code IN ('IPQ_REF1TIT', 'IPQ_REF1ORG', 'IPQ_REF1AL1')
 GROUP BY ipf_ipuc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11632809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档