Sql 从oracle视图中删除重复行
我有一个oracle视图,其中包含一些重复数据。我正在尝试从视图中删除这些重复行: 这是我的视图代码:Sql 从oracle视图中删除重复行,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个oracle视图,其中包含一些重复数据。我正在尝试从视图中删除这些重复行: 这是我的视图代码: CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS SELECT container.id, container.container_id AS parent_id, document.document_
CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS
SELECT container.id,
container.container_id AS parent_id,
document.document_type_id,
container.number_of_documents AS amount
FROM container
JOIN document ON document.container_id = container.id ;
该视图给出了以下结果:
ID | PARENT_ID | DOCUMENT_TYPE_ID | Amount
21 23 3 2
21 23 3 2
21 23 3 1
15 26 3 4
是否有人可以帮助我从该视图中删除重复行以获得以下信息:
ID | PARENT_ID | DOCUMENT_TYPE_ID | Amount
21 23 3 2
21 23 3 1
15 26 3 4
提前感谢在返回结果后,最简单的方法是在选择中使用DISTINCT:
CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS
SELECT DISTINCT container.id,
container.container_id AS parent_id,
document.document_type_id,
container.number_of_documents AS amount
FROM container
JOIN document ON document.container_id = container.id ;
如果在文档计数中发现错误,可以尝试以下方法:
CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS
SELECT container.id,
container.container_id AS parent_id,
document.document_type_id,
SUM(container.number_of_documents) AS amount
FROM container
JOIN document ON document.container_id = container.id
GROUP BY container.id,
container.container_id,
document.document_type_id
根据返回的结果,最简单的方法是在SELECT中使用DISTINCT:
CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS
SELECT DISTINCT container.id,
container.container_id AS parent_id,
document.document_type_id,
container.number_of_documents AS amount
FROM container
JOIN document ON document.container_id = container.id ;
如果在文档计数中发现错误,可以尝试以下方法:
CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS
SELECT container.id,
container.container_id AS parent_id,
document.document_type_id,
SUM(container.number_of_documents) AS amount
FROM container
JOIN document ON document.container_id = container.id
GROUP BY container.id,
container.container_id,
document.document_type_id
也许你应该使用不同的操作符
CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS
SELECT DISTINCT container.id,
container.container_id AS parent_id,
document.document_type_id,
container.number_of_documents AS amount
FROM container
JOIN document ON document.container_id = container.id ;
也许你应该使用不同的操作符
CREATE OR REPLACE FORCE VIEW "GLSID"."VW_GLSID_DOCUMENTS" ("ID", "PARENT_ID", "DOCUMENT_TYPE_ID", "AMOUNT") AS
SELECT DISTINCT container.id,
container.container_id AS parent_id,
document.document_type_id,
container.number_of_documents AS amount
FROM container
JOIN document ON document.container_id = container.id ;
我以前尝试过Distinct,但它给了我一个空视图,但当我在SQL developer中关闭并重新打开视图时,它显示的数据没有重复的行,谢谢!我以前尝试过Distinct,但它给了我一个空视图,但当我在SQL developer中关闭并重新打开视图时,它显示的数据没有重复的行,谢谢
选择DISTINCT
绝对可以解决您的问题。就我个人而言,如果您不希望出现重复项,我想知道为什么会出现重复项。SELECT DISTINCT
肯定能解决您的问题。就我个人而言,我想知道为什么会出现重复的,如果你没有预料到的话。