Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL联接删除和复制行_Sql_Oracle_Join - Fatal编程技术网

Oracle SQL联接删除和复制行

Oracle SQL联接删除和复制行,sql,oracle,join,Sql,Oracle,Join,我在Oracle DB中有三个表 01. TBL_ITS_INS_CLAIM_TRANSACTIONS ╔═════════════════════════════╗ ║ Id PolicyMasterID Ref_No ║ ╠═════════════════════════════╣ ║ 01 106 P100 ║ ║ 02 106 P200 ║ ╚═════════════════════════════╝

我在Oracle DB中有三个表

01. TBL_ITS_INS_CLAIM_TRANSACTIONS

╔═════════════════════════════╗
║ Id  PolicyMasterID  Ref_No  ║
╠═════════════════════════════╣
║ 01    106              P100 ║
║ 02    106              P200 ║
╚═════════════════════════════╝





02. TBL_ITS_INS_CLAIM_SETTLEMENT

╔══════════════════════════════╗
║ Id   CLAIM_TRANSACTIONS_ID   ║
╠══════════════════════════════╣
║ 01    01                     ║
║ 02    01                     ║
║ 03    01                     ║
╚══════════════════════════════╝


03. TBL_ITS_INS_CLAIM_SUBROGATION

╔════════════════════════════╗
║ Id   CLAIM_TRANSACTIONS_ID ║
╠════════════════════════════╣
║ 01    01                   ║
║ 02    01                   ║
║ 03    01                   ║
╚════════════════════════════
我尝试过的是,我在下面写了获取结果的查询……但它重复了行。 我编辑了以下代码:

SELECT TBL_ITS_INS_CLAIM_TRANSACTIONS.ID as "Claim Trans ID",      
  TBL_ITS_INS_CLAIM_SETTLEMENT.ID as "SettlementId",
  TBL_ITS_INS_CLAIM_SUBROGATION.ID as "SUBROGATION ID"
FROM TBL_ITS_INS_CLAIM_TRANSACTIONS
LEFT JOIN TBL_ITS_INS_CLAIM_SUBROGATION
ON TBL_ITS_INS_CLAIM_TRANSACTIONS.ID = TBL_ITS_INS_CLAIM_SUBROGATION.CLAIM_TRANSACTIONS_ID
LEFT JOIN TBL_ITS_INS_CLAIM_SETTLEMENT
ON TBL_ITS_INS_CLAIM_TRANSACTIONS.ID = TBL_ITS_INS_CLAIM_SETTLEMENT.CLAIM_TRANSACTIONS_ID
以上查询的结果

╔══════════════════════════════════════════════════╗
║ Claim_Trans_ID    SettlementId   SUBROGATION _ID ║
╠══════════════════════════════════════════════════╣
║ 106                   01              01         ║
║ 106                   01              02         ║
║ 106                   02              01         ║
║ 106                   02              02         ║
║ 106                   03              01         ║
║ 106                   03              02         ║
╚══════════════════════════════════════════════════╝
我想得到下面的结果

╔══════════════════════════════════════════════════╗
║ Claim_Trans_ID    SettlementId   SUBROGATION _ID ║
╠══════════════════════════════════════════════════╣
║ 106                     01            01         ║
║ 106                     02            02         ║
║ 106                     03                       ║
╚══════════════════════════════════════════════════╝

我怎样才能得到上面这样的结果呢?

只是一个评论,但太长了

我很感谢您在格式化数据方面所做的努力,但这对于人们复制您的案例和测试某些代码来说并不是很有用

发布示例数据的最佳方式(IMHO)是发布人们可以轻松运行以创建案例的内容,而无需编辑

在您的问题中,我会将样本数据发布为:

create table TBL_ITS_INS_CLAIM_TRANSACTIONS(Id, PolicyMasterID, Ref_No) as (
  select '01', 106, 'P100' from dual union all
  select '02', 106, 'P100' from dual
);
create table TBL_ITS_INS_CLAIM_SETTLEMENT(ID, CLAIM_TRANSACTIONS_ID) as (
  select '01', '01' from dual union all
  select '02', '01' from dual union all
  select '03', '01' from dual
);
create table TBL_ITS_INS_CLAIM_SUBROGATION (Id, CLAIM_TRANSACTIONS_ID) as (
select '01', '01' from dual union all
select '02', '01' from dual union all
select '03', '01' from dual
);
创建表后,很容易注意到表结构与查询不匹配:

SQL> SELECT TBL_ITS_INS_CLAIM_TRANSACTIONS.ID as "Claim Trans ID",
  2    TBL_ITS_INS_CLAIM_SETTLEMENT.ID as "SettlementId",
  3    TBL_ITS_INS_CLAIM_SUBROGATION.ID as "SUBROGATION ID"
  4  FROM TBL_ITS_INS_CLAIM_TRANSACTIONS
  5  LEFT JOIN TBL_ITS_INS_CLAIM_SUBROGATION
  6  ON TBL_ITS_INS_CLAIM_TRANSACTIONS.ID = TBL_ITS_INS_CLAIM_SUBROGATION.CLAIM_TRAN_SUM_ID
  7  LEFT JOIN TBL_ITS_INS_CLAIM_SETTLEMENT
  8  ON TBL_ITS_INS_CLAIM_TRANSACTIONS.ID = TBL_ITS_INS_CLAIM_SETTLEMENT.CLAIM_TRAN_SUM_ID;
ON TBL_ITS_INS_CLAIM_TRANSACTIONS.ID = TBL_ITS_INS_CLAIM_SUBROGATION.CLAIM_TRAN_SUM_ID
                                       *
ERROR at line 6:
ORA-00904: "TBL_ITS_INS_CLAIM_SUBROGATION"."CLAIM_TRAN_SUM_ID": invalid
identifier

您的结果与您的查询不匹配。当您没有在select子句中选择策略主Id时,为什么会显示它。此外,唯一匹配的事务id是01。为什么会显示其他结果?您能更好地解释一下所需结果背后的逻辑吗?今天的提示:使用表别名!(使查询更易于编写和读取。)什么不起作用?我只是解释说,您发布的表结构与您的查询不匹配,因此您应该编辑您的问题以解决此问题。我不明白你为什么接受这个答案。你需要的结果背后的逻辑我还不清楚。请试着更好地解释为什么你期望得到这样的结果。此外,更广泛的样本数据集也可能有用