2016-11-09 99 views
0

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

这是我的代码

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结果加上是如图enter image description here

回答

2

那就是在SQL * Plus的BREAK ON directive是。添加到您的COLUMN格式化指令:

BREAK ON E_ID ON E_NAME ... 

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

+0

谢谢你完美的作品 –