Свертывание нескольких строк данных в 1 строку с отображением 'NA' или 'None', если NULL - PullRequest
0 голосов
/ 19 марта 2019

Я использую приведенный ниже оператор для получения значений в одну строку.Я хотел бы отобразить «NA» или «None», если значение отсутствует.Как включить это в приведенное ниже заявление?

 STUFF((SELECT CASE WHEN COUNT(pp.sPetType) > 0 and pp.sPetIsServiceAnimal = 'Yes' THEN
          CASE WHEN COUNT(pp.sPetType) = 1 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '1 ' + pp.sPetType  ELSE
          CASE WHEN COUNT(pp.sPetType) = 2 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '2 ' + pp.sPetType  + 's' ELSE
          CASE WHEN COUNT(pp.sPetType) = 3 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '3 ' + pp.sPetType + 's'
          END END END ELSE 'None' END
          FROM person_pet pp
          WHERE t.hMyPerson = pp.hMyPerson
          GROUP BY pp.sPetType, pp.sPetIsServiceAnimal
          FOR XML Path('')), 1, 1, '')   [ServiceAnimal]

Ответы [ 3 ]

0 голосов
/ 19 марта 2019
 STUFF((SELECT ISNULL(CASE WHEN COUNT(pp.sPetType) > 0 and pp.sPetIsServiceAnimal = 'Yes' THEN
          CASE WHEN COUNT(pp.sPetType) = 1 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '1 ' + pp.sPetType  ELSE
          CASE WHEN COUNT(pp.sPetType) = 2 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '2 ' + pp.sPetType  + 's' ELSE
          CASE WHEN COUNT(pp.sPetType) = 3 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '3 ' + pp.sPetType + 's'
          END END END ELSE 'None' END,'None')
          FROM person_pet pp
          WHERE t.hMyPerson = pp.hMyPerson
          GROUP BY pp.sPetType, pp.sPetIsServiceAnimal
          FOR XML Path('')), 1, 1, '')   [ServiceAnimal]
0 голосов
/ 19 марта 2019

Я предполагаю, что вы хотите, чтобы [ServiceAnimal] имел результат 'NA', если он нулевой.Это простой способ добиться этого.

  ISNULL(STUFF((SELECT CASE WHEN COUNT(pp.sPetType) > 0 and pp.sPetIsServiceAnimal = 'Yes' THEN
          CASE WHEN COUNT(pp.sPetType) = 1 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '1 ' + pp.sPetType  ELSE
          CASE WHEN COUNT(pp.sPetType) = 2 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '2 ' + pp.sPetType  + 's' ELSE
          CASE WHEN COUNT(pp.sPetType) = 3 and pp.sPetIsServiceAnimal = 'Yes' then '; ' + '3 ' + pp.sPetType + 's'
          END END END ELSE 'None' END
          FROM person_pet pp
          WHERE t.hMyPerson = pp.hMyPerson
          GROUP BY pp.sPetType, pp.sPetIsServiceAnimal
          FOR XML Path('')), 1, 1, ''), 'NA') [ServiceAnimal] 
0 голосов
/ 19 марта 2019

Если я правильно понял:

Добавьте еще один СЛУЧАЙ во внешнем регистре, как это:

CASE WHEN (pp.sPetType IS NULL OR pp.sPetType = '') THEN  'NA' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...