Как получить последнее значение при объединении двух значений, если первое значение равно нулю? - PullRequest
1 голос
/ 06 мая 2019

У меня есть SQL-запрос, который объединяет имя и фамилию.Но если нет имени и есть значение во втором имени, тогда результат комбинации равен нулю

select  CompanyContact.FirstName + ' '
 + COALESCE(CompanyContact.LastName, '')  AS Name
from bsDocument 
LEFT JOIN Contact AS CompanyContact ON CompanyContact.ContactID = bsDocument.DocumentContactID

 WHERE   bsDocument.SellerID = 3632
AND bsDocument.Module = 'bsContract'

В следующем столбце значение CompanyContact.FirstName равно нулю, а значение CompanyContact.LastName равно 'Дахаль, но результат отображается как ноль.Как я могу это исправить?

Ответы [ 4 ]

1 голос
/ 06 мая 2019

использование concat()

select concat(CompanyContact.FirstName,' ',CompanyContact.LastName)  AS Name
from bsDocument 
LEFT JOIN Contact AS CompanyContact ON CompanyContact.ContactID = bsDocument.DocumentContactID
WHERE   bsDocument.SellerID = 3632
AND bsDocument.Module = 'bsContract'
1 голос
/ 06 мая 2019

используйте COALESCE в FirstName как фамилию

select COALESCE(CompanyContact.FirstName,'') + ' '
 + COALESCE(CompanyContact.LastName, '')  AS Name
from bsDocument 
LEFT JOIN Contact AS CompanyContact ON CompanyContact.ContactID = bsDocument.DocumentContactID

 WHERE   bsDocument.SellerID = 3632
AND bsDocument.Module = 'bsContract'
0 голосов
/ 06 мая 2019

Используйте выражение CASE:

SELECT
CASE 
    WHEN NULLIF(CompanyContact.FirstName, '') IS NULL THEN CompanyContact.LastName
    ELSE CompanyContact.FirstName + ' ' + CompanyContact.LastName
    END AS Name
FROM bsDocument 
LEFT JOIN Contact AS CompanyContact ON CompanyContact.ContactID = bsDocument.DocumentContactID
WHERE bsDocument.SellerID = 3632
AND bsDocument.Module = 'bsContract'
0 голосов
/ 06 мая 2019

Вы можете использовать stuff() с конкатенацией строк:

select stuff((coalesce(' ' + c.FirstName, '') +
              coalesce(' ' + c.LastName, ''),
             ), 1, 1, '') as Name
from bsDocument d left join
     Contact c
     on c.ContactID = d.DocumentContactID
where d.SellerID = 3632 and
      d.Module = 'bsContract';

Это свойство nice включает только пробелы между именем и фамилией.Эта структура легко распространяется на столько нулевых строк, сколько вы хотите.

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