首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与ROW_NUMBER合并

与ROW_NUMBER合并
EN

Stack Overflow用户
提问于 2021-05-13 22:34:41
回答 1查看 309关注 0票数 0

我正在尝试执行一个合并,以插入和更新可能在表中的情况。但是,在表1中,我只希望它插入tbl2.rfc字段的唯一值​​,而不管我的其他字段发生了什么变化,我只想显示该字段的唯一值​​。我占用ROW_NUMBER函数只带来唯一的值,但是我无法将这个函数添加到合并中。

代码语言:javascript
运行
复制
MERGE INTO   B69_TBL1 tbl1
    USING  (SELECT T1.*, ROW_NUMBER() OVER (PARTITION BY T1.rfc ORDER BY T1.rfc  DESC) ENUMERADO                 
    FROM B69_TBL2 tbl2 
    
WHEN MATCHED THEN
UPDATE SET
tbl1.id_tbl1 = tbl2.id_con,
tbl1.rfc = tbl2.rfc,
tbl1.rfc = tbl2.name_cont

WHEN NOT MATCHED THEN
INSERT (tbl1.id_tbl1,tbl1.tbl1tipo,tbl1.id_concentrado,tbl1.rfc,
        tbl1.name_cont,tbl1.baja_logica,tbl1.last_update)
VALUES (id_tbl1autt.nextval,'1','1',tbl2.id_concentrado,tbl2.rfc,
        tbl2.name_cont,'0', '11/05/2021')
        ) T1
WHERE ENUMERADO=1 
AND RFC IS NOT NULL

它标记的错误是00907。00000 -“漏掉右括号”

因为我有过这样的经历,但它恰恰失败了。

代码语言:javascript
运行
复制
MERGE INTO   B69_TBL1 tbl1
    USING  (SELECT T1.*, ROW_NUMBER() OVER (PARTITION BY T1.rfc ORDER BY T1.rfc  DESC) ENUMERADO    
    ON   tbl1.rfc = tbl2.rfc
    FROM B69_TBL2 tbl2 )
    
WHEN MATCHED THEN
UPDATE SET
tbl1.id_alert = tbl2.id_con,
tbl1.rfc = tbl2.rfc,
tbl1.rfc = tbl2.name_cont

WHEN NOT MATCHED THEN
INSERT (tbl1.id_alert,tbl1.alertype,tbl1.id_con,tbl1.rfc,
        tbl1.name_cont,tbl1.baja_logica,tbl1.last_update)
VALUES (id_tbl1autt.nextval,'1','1',tbl2.id_con,tbl2.rfc,
        tbl2.name_cont,'0', '11/05/2021')
        ) T1
WHERE ENUMERADO=1 
AND RFC IS NOT NULL
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-13 23:31:47

UPDATEINSERT;

  • You中的目标列名更新rfc列两次之前,不需要使用tbl1别名;在rfc列中删除第二个< instance);

  • There >D17别名后,在<>D18查询之后删除第二个<代码>D17别名;
  • ,您可以使用DATE文字而不是字符串.

可能还有其他错误,因为我没有您的表来测试查询。

代码语言:javascript
运行
复制
MERGE INTO   B69_TBL1 tbl1
USING  (
  SELECT T1.*,
         ROW_NUMBER() OVER (PARTITION BY T1.rfc ORDER BY T1.rfc  DESC) AS ENUMERADO
  FROM   B69_TBL2 t1
)  tbl2
ON tbl1.rfc = tbl2.rfc
WHEN MATCHED THEN
  UPDATE SET
    id_alert = tbl2.id_con,
    rfc = tbl2.rfc
WHEN NOT MATCHED THEN
  INSERT (
    id_alert,
    alertype,
    id_con,
    rfc,
    name_cont,
    baja_logica,
    last_update
  ) VALUES (
    id_tbl1autt.nextval,
    '1',
    '1',
    tbl2.id_con,
    tbl2.rfc,
    tbl2.name_cont,
    '0',
    DATE '2021-05-11'
  )
  WHERE ENUMERADO=1 
  AND   RFC IS NOT NULL
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67527003

复制
相关文章

相似问题

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