SQL Server: измените текст значения в запрошенных результатах

#sql-server

#sql-сервер

Вопрос:

Я пытаюсь вернуть и изменить все записи в столбце login для каждой записи, значение которой = «Изменить этот текст» на «Запрашивающий». Приведенное ниже работает, но возвращает только 2 значения: «Пользователь» и «Запрашивающий», хотя есть 7 других записей, где login = «Изменить этот текст»

 declare @MainHospital varchar(50)='Hospital1';

SELECT CASE login

        WHEN 'Change this text' THEN 'Requester'
        ELSE 'User'
       END    

FROM Survey
WHERE MainHospital = @MainHospital
GROUP BY MainHospital, login
  

Ответ №1:

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

Если вы удалите группировку, и она вернет 7 строк:

 SELECT CASE login
    WHEN 'Change this text' THEN 'Requester'
    ELSE 'User'
   END    
FROM Survey
WHERE MainHospital = @MainHospital
  

В противном случае включите другой уникальный столбец, который предотвратит группировку.