从Oracle SQL * Plus查询中删除重复数据

时间:2016-11-09 20:02:37

标签: oracle oracle10g sqlplus

我目前正在使用oracle 10g构建数据库系统。我开发了一个查询,显示事件的实例,请求事件的客户以及分配给事件的人员。我的查询返回所有正确的结果,但我想知道是否有办法删除重复数据。对于分配的每个工作人员,结果将返回事件和客户详细信息。我附上了一张照片。有没有办法在其列中仅返回客户和事件详细信息一次以及在该列中分配的相应员工记录?

这是我的代码

COLUMN E_ID FORMAT A7
COLUMN E_NAME FORMAT A20
COLUMN E_STIME FORMAT A30
COLUMN E_FTIME FORMAT A30
COLUMN E_COST FORMAT 9999999.99
COLUMN ET_ET_ID FORMAT A5
COLUMN V_V_ID FORMAT A5
COLUMN C_C_ID FORMAT A5
COLUMN C_FNAME FORMAT A10
COLUMN C_LNAME FORMAT A10
COLUMN S_S_ID FORMAT A5
COLUMN S_FNAME FORMAT A10
COLUMN S_LNAME FORMAT A10
COLUMN S_TASK FORMAT A20
COLUMN S_CNUM FORMAT 9999999
COLUMN ST_DESC FORMAT A20
SELECT E_ID, E_NAME, EVENT.C_C_ID ,C_FNAME, C_LNAME, E_STIME, E_FTIME, E_COST, EVENT.ET_ET_ID, EVENT.V_V_ID, EVENT_STAFF.S_S_ID, S_FNAME, S_LNAME, S_TASK, S_CNUM, STAFFTYPE.ST_DESC 
FROM CUSTOMER, EVENT, EVENT_STAFF, STAFF, STAFFTYPE
WHERE EVENT.E_ID = 'E000004'
AND EVENT.C_C_ID = CUSTOMER.C_ID
AND EVENT.E_ID = EVENT_STAFF.E_E_ID
AND EVENT_STAFF.S_S_ID = STAFF.S_ID
AND STAFF.ST_ST_ID = STAFFTYPE.ST_ID;

SQL plus中的结果如enter image description here

所示

1 个答案:

答案 0 :(得分:2)

这就是SQL * Plus中BREAK ON directive的用途。添加到您的COLUMN格式指令:

BREAK ON E_ID ON E_NAME ...

列出要省略重复项的所有列。不要忘记使用ORDER BY来确保每个事件和客户的记录以正确的顺序返回。