如何避免 DB2 查询中的冗余?

How do I avoid redundancy in query on DB2?

我正在尝试 return 每个驱动程序在我的查询中只显示一行。

目前我正在将我的驱动程序 table 的专栏 Terminal_number 链接到我的站点 table 的专栏 First_field_insert,但在 first_field_insert 中是一些相同的值!结果它会产生重复的 returns!

理想情况下,我希望每个驱动程序只 return 一排。

这是我的:

SELECT D.DRIVER_ID, D.NAME, D.USER9 AS PHONE, 
       CASE D.TERMINAL_NUMBER WHEN '0' THEN FETCH FIRST ROW ONLY END,
       D.DRIVER_TYPE, S.FAX_PHONE_NUMBER
FROM DRIVER D,
     SITE S
WHERE ACTIVE_IN_DISP = 'True' 
  AND TERMINAL_NUMBER = FIRST_FIELD_INSERT 
  AND FAX_PHONE_NUMBER = :FAX_PHONE_NUMBER
ORDER BY DRIVER_ID, TERMINAL_NUMBER
WITH UR

(SELECT FAX_PHONE_NUMBER 来自站点 FIRST_FIELD_INSERT = CAST(TERMINAL_NUMBER AS VARCHAR(2)) AND FAX_PHONE_NUMBER = :FAX_PHONE_NUMBER 仅获取前 1 行) AS REGION

我喜欢@Oliver H 建议的方向。这里的另一种可能性是在 SITE table 中预先选择必要的记录,然后再将其与 DRIVER table 连接,但从性能的角度来看,它肯定不是那么理想。

SELECT D.DRIVER_ID, D.NAME, D.USER9 AS PHONE, 
       CASE D.TERMINAL_NUMBER WHEN '0' THEN FETCH FIRST ROW ONLY END,
       D.DRIVER_TYPE, S.FAX_PHONE_NUMBER
FROM DRIVER D,
     (select distinct driver_id, first_field_insert, first_field_column, fax_phone_number
        from SITE) S
WHERE ACTIVE_IN_DISP = 'True' 
  AND TERMINAL_NUMBER = FIRST_FIELD_INSERT 
  AND FAX_PHONE_NUMBER = :FAX_PHONE_NUMBER
ORDER BY DRIVER_ID, TERMINAL_NUMBER
WITH UR