Выберите уникальные данные на основе одного столбца в запросе на присоединение

Запрос

SELECT DISTINCT 
    device.name as device,
    devicepool.name as devicepool,
    device.description AS Phone_Description,
    NumPlan.dNOrPattern as Primary_did,
    applicationuser.name
    FROM applicationuser 
    LEFT OUTER JOIN applicationuserdevicemap
        on applicationuserdevicemap.fkapplicationuser = applicationuser.pkid 
    LEFT OUTER JOIN device 
        on device.pkid =applicationuserdevicemap.fkdevice
    LEFT OUTER JOIN DeviceNumPlanMap 
        on DeviceNumPlanMap.fkDevice=Device.pkid 
    FULL JOIN NumPlan 
        on NumPlan.pkid = DeviceNumPlanMap.fkNumPlan AND NumPlan.dNOrPattern NOT LIKE '%#%'
    LEFT OUTER JOIN devicepool
        on device.fkdevicepool = devicepool.pkid 
    WHERE (DeviceNumPlanMap.NumPlanIndex=1 OR DeviceNumPlanMap.NumPlanIndex IS NULL)
        AND device.name like 'SEP%'
        AND device.description NOT LIKE '%IPCOM%'
        AND applicationuser.name='actuser'
    ORDER BY devicepool.name, NumPlan.dNOrPattern

Что приводит к

device          | devicepool| phone_description |   primary_did | name
--------------------------------------------------------------------------
SEPA40CC3956A58 | DBL_Test  | Auto 8964         | 8964          | actuser
SEP00230432ABDC | DP_W00301 | Auto 8968         | 4082600       | actuser
SEP001BD5E86761 | DP_W00301 | SEP001B54520367   | 7001          | actuser
SEP00260B5E1997 | DP_W00301 | Auto 8965         | 8965          | actuser
SEP00175A756654 | DP_W06851 | Dobson,Ronda      |               | actuser
SEP00175A756654 | DP_W06851 | Dobson,Ronda      | 8505998965    | actuser
SEP001B54520367 | DP_WA6201 | SEP001B54520367   |               | actuser

Мне нужны результаты с Primaru DID как NULL или пустым. Это вызвало неуникальную запись в столбце устройства с повторением SEP00175A756654 дважды.

Так что в идеале результат должен быть,

     device         | devicepool| phone_description |   primary_did | name
    --------------------------------------------------------------------------
    SEPA40CC3956A58 | DBL_Test  | Auto 8964         | 8964          | actuser
    SEP00230432ABDC | DP_W00301 | Auto 8968         | 4082600       | actuser
    SEP001BD5E86761 | DP_W00301 | SEP001B54520367   | 7001          | actuser
    SEP00260B5E1997 | DP_W00301 | Auto 8965         | 8965          | actuser
    SEP00175A756654 | DP_W06851 | Dobson,Ronda      | 8505998965    | actuser
    SEP001B54520367 | DP_WA6201 | SEP001B54520367   |               | actuser

Мне нужно решение о том, как использовать внутреннее соединение здесь. Если причина также может быть объяснена.

0 ответов

Другие вопросы по тегам