Как выполнить GROUP BY для столбца с псевдонимами в MS-SQL Server? - PullRequest
57 голосов
/ 31 января 2009

Я пытаюсь выполнить действие group by для столбца с псевдонимом (пример ниже), но не могу определить правильный синтаксис.

SELECT       LastName + ', ' + FirstName AS 'FullName'
FROM         customers
GROUP BY     'FullName'

Какой правильный синтаксис?

<ч /> EDIT

Если продолжить вопрос (я не ожидал получить ответы), будет ли решение по-прежнему применяться для столбца с псевдонимом CASEed?

SELECT       
    CASE
        WHEN LastName IS NULL THEN FirstName
        WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName
    END AS 'FullName'
FROM         customers
GROUP BY     
    LastName, FirstName

И ответ - да, это все еще применяется.

Ответы [ 12 ]

0 голосов
/ 02 февраля 2009

Если вы хотите избежать путаницы с оператором case в вашем запросе дважды, вы можете поместить его в пользовательскую функцию.

Извините, но SQL Server не отображает набор данных до предложения Group By, поэтому псевдоним столбца недоступен. Вы можете использовать его в Order By.

0 голосов
/ 31 января 2009

В старых FoxPro (я не использовал его с версии 2.5), вы могли бы написать что-то вроде этого:

SELECT       LastName + ', ' + FirstName AS 'FullName', Birthday, Title
FROM         customers
GROUP BY     1,3,2

Мне очень понравился этот синтаксис. Почему это не реализовано где-то еще? Это хороший ярлык, но я предполагаю, что он вызывает другие проблемы?

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