SQL, объединяющий три таблицы, возвращает дополнительную строку NULL - PullRequest
0 голосов
/ 04 сентября 2018

Я присоединяюсь к трем таблицам, чтобы узнать, сколько времени требуется специалисту по обслуживанию имущества для выполнения задачи. Мне нужно имя собственности, какова была задача, сколько времени это заняло и кем был этот человек.

Подвох состоит в том, что некоторые задачи были введены в систему без чьего-либо имени, что вполне нормально, поэтому оно отображается как NULL. Но чтобы отследить, сколько времени потребовалось для выполнения задачи, задачи, которые не имели названия, показываются отлично, как «Нет, без времени». Это хорошо. Задачи с именем человека на нем показывают две строки - одну для чувака и одну для NULL.

Я не хочу иметь значение NULL / None, если в задании указано имя парня. Ниже вы видите урезанную версию запроса. Я хочу только строку, которая показывает Михаила.

Мысли? Спасибо за любую помощь.

РЕЗУЛЬТАТ

1   2415    35719   NULL    Lobby ceiling and wall leaking
2   2415    35719   Mikhail Lobby ceiling and wall leaking

ОЖИДАЕТСЯ

2   2415    35719   Mikhail Lobby ceiling and wall leaking

Код:

SELECT  
    p.sCode "Property",
    p.sAddr1 "PropertyName",
    wo.scode,
    COALESCE(person.sfirstname + ' ' + person.ulastname, 'None'),
    wo.sbriefdesc,
    wo.spriority,
    wo.scategory,
    wo.ssubcat,
    ISNULL(wod.dtactstart, 0),
    ISNULL(wod.dtactfinish, 0),
    /* COALESCE(ROUND((CAST((wo.dtwcompl - wo.dtcall) AS FLOAT) * 24.0 * 60), 3), 0) AS TechTimeInMins */
    COALESCE(ROUND((CAST((wod.dtactfinish - wod.dtactstart) AS FLOAT) * 24.0), 3), 0) AS TechTimeInHours,
    COALESCE(ROUND((CAST((wod.dtactfinish - wod.dtactstart) AS FLOAT)), 3), 0) AS TechTimeInDays
FROM
    MM2WO wo
LEFT OUTER JOIN
    property p ON wo.hProperty = p.hMy
LEFT OUTER JOIN
    mm2wodet wod ON wod.hWo = wo.hMy
LEFT OUTER JOIN
    person ON person.hmy = wod.hperson
WHERE
    1 = 1
    AND wo.sstatus IN ('Work Completed')
ORDER BY  
    p.sAddr1 ASC, wo.scode

1 Ответ

0 голосов
/ 04 сентября 2018
From MM2WO wo
    left outer join property p on wo.hProperty = p.hMy
    left outer join mm2wodet wod on wo.hMy= wod.hWo 
    left outer join person on person.hmy = wod.hperson
     where 1 = 1 and  wod.hperson is not null and 
    person.sfirstname   is not null  and  person.ulastname  is not null
In this case id sfirstname or ulastname is null it will replace name with space for that person

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...