Я не нашел никакой документации, которая объясняет следующее поведение, как db, так и уровень сервера - CI (нечувствительный к регистру), почему он по-прежнему чувствителен к регистру в этом аспекте?
--Works
SELECT CASE name WHEN 'a' THEN 'adam' ELSE 'bertrand' END AS name, COUNT(value) FROM
(
SELECT 'a' AS name,1 AS value
UNION
SELECT 'b',1
UNION
SELECT 'b',2
)a
GROUP BY CASE name WHEN 'a' THEN 'adam' ELSE 'bertrand' END
--Returns an Error Message, please note the "B" in Bertrand in the GROUP BY
SELECT CASE name WHEN 'a' THEN 'adam' ELSE 'bertrand' END name, COUNT(value) FROM
(
SELECT 'a' AS name,1 AS value
UNION
SELECT 'b',1
UNION
SELECT 'b',2
)a
GROUP BY CASE name WHEN 'a' THEN 'adam' ELSE 'Bertrand' END
Второй запрос возвращает это сообщение об ошибке.
Msg 8120, уровень 16, состояние 1, строка 2
Столбец "a.name" недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY.