oracle 选择不同的返回重复项

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/27015408/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 02:38:00  来源:igfitidea点击:

Select distinct returns duplicates

sqloracle

提问by Cove

I have the following query:

我有以下查询:

SELECT 
DISTINCT (TK.TICKETID),
TK.DESCRIPTION,
TK.CREATIONDATE,
TK.REPORTEDBY,
TK.OWNER,
WF.ASSIGNCODE
FROM ticket TK
INNER JOIN wfassignment WF on WF.OWNERID = TK.TICKETUID
WHERE TK.status not in ('ЧЕРНОВИК', 'ЗАКРЫТ', 'ВЫПОЛНЕН') AND WF.ASSIGNSTATUS not in ('COMPLETE', 'INACTIVE')
ORDER BY TK.TICKETID;

But it returns duplicates in TK.TICKETID attribute. And if i remove other attributes all ok. e.g.

但它返回 TK.TICKETID 属性中的重复项。如果我删除其他属性一切正常。例如

TK.TICKETID TK.DESCRIPTION TK.CREATIONDATE  TK.REPORTEDBY  TK.OWNER     WF.ASSIGNCODE
О1013249    Право доступа   02.06.14        CHERNOVDK      SKACHKOVSV   NOVIKOVVA
О1013249    Право доступа   02.06.14        CHERNOVDK      SKACHKOVSV   PRITULADV
О1013249    Право доступа   02.06.14        CHERNOVDK      SKACHKOVSV   SVESHNIKOVAV

M.b. my question is simple but I can't solve it by myself. Will be greatfull for any kind of help.

Mb 我的问题很简单,但我自己无法解决。将非常适合任何形式的帮助。

采纳答案by Horaciux

Try this:

尝试这个:

SELECT 
TK.TICKETID,
TK.DESCRIPTION,
TK.CREATIONDATE,
TK.REPORTEDBY,
TK.OWNER,
max(WF.ASSIGNCODE)
FROM ticket TK
INNER JOIN wfassignment WF on WF.OWNERID = TK.TICKETUID
WHERE TK.status not in ('ЧЕРНОВИК', 'ЗАКРЫТ', 'ВЫПОЛНЕН') AND WF.ASSIGNSTATUS not in ('COMPLETE', 'INACTIVE')
group by
TK.TICKETID,
TK.DESCRIPTION,
TK.CREATIONDATE,
TK.REPORTEDBY,
TK.OWNER
ORDER BY TK.TICKETID;

回答by Jeevan Varughese

There are multiple columns in the select query, the query check for uniqueness across all the columns, not just the one in brackets.

select 查询中有多个列,该查询检查所有列的唯一性,而不仅仅是括号中的那一列。

The SQL DISTINCT keyword is used in conjunction with SELECT statement to eliminate all the duplicate recordsand fetching only unique records.. Please note it not just columns

SQL DISTINCT 关键字与 SELECT 语句结合使用以消除所有重复记录并仅获取唯一记录。. 请注意它不仅仅是列

If you modify your query to this:

如果您将查询修改为:

SELECT 
DISTINCT (TK.TICKETID),
TK.DESCRIPTION,
TK.CREATIONDATE,
TK.REPORTEDBY,
TK.OWNER
FROM ticket TK
INNER JOIN wfassignment WF on WF.OWNERID = TK.TICKETUID
WHERE TK.status not in ('ЧЕРНОВИК', 'ЗАКРЫТ', 'ВЫПОЛНЕН') AND WF.ASSIGNSTATUS not in ('COMPLETE', 'INACTIVE')
ORDER BY TK.TICKETID;

You will get just one result.

你只会得到一个结果。

In the output, please note the following, the starred ones are all different.

在输出中,请注意以下内容,带星号的都是不同的。

TK.TICKETID TK.DESCRIPTION TK.CREATIONDATE  TK.REPORTEDBY  TK.OWNER     **WF.ASSIGNCOD**E
О1013249    Право доступа   02.06.14        CHERNOVDK      SKACHKOVSV   **NOVIKOVVA**
О1013249    Право доступа   02.06.14        CHERNOVDK      SKACHKOVSV   **PRITULADV**
О1013249    Право доступа   02.06.14        CHERNOVDK      SKACHKOVSV   **SVESHNIKOVAV**