从 Oracle SQL*Plus 查询中删除重复数据
remove repeating data from Oracle SQL*Plus query
我目前正在使用oracle 10g构建数据库系统。我开发了一个查询,显示一个事件的实例、请求该事件的客户和分配给该事件的员工。我的查询 return 的所有结果都是正确的,但我想知道是否有办法删除重复数据。对于分配结果 return 的每个员工,事件和客户详细信息。我附上了一张照片。有没有办法 return 客户和事件的详细信息只在他们的列中出现一次,并在该列中分配相应的员工记录?
这是我的代码
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加的结果如图
这就是 SQL*Plus 中的 BREAK ON
directive 的用途。添加到您的 COLUMN
格式化指令:
BREAK ON E_ID ON E_NAME ...
列出您要省略重复项的所有列。不要忘记使用 ORDER BY
来确保以正确的顺序记录每个事件和客户 return。
我目前正在使用oracle 10g构建数据库系统。我开发了一个查询,显示一个事件的实例、请求该事件的客户和分配给该事件的员工。我的查询 return 的所有结果都是正确的,但我想知道是否有办法删除重复数据。对于分配结果 return 的每个员工,事件和客户详细信息。我附上了一张照片。有没有办法 return 客户和事件的详细信息只在他们的列中出现一次,并在该列中分配相应的员工记录?
这是我的代码
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加的结果如图
这就是 SQL*Plus 中的 BREAK ON
directive 的用途。添加到您的 COLUMN
格式化指令:
BREAK ON E_ID ON E_NAME ...
列出您要省略重复项的所有列。不要忘记使用 ORDER BY
来确保以正确的顺序记录每个事件和客户 return。