Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2011, 22:57   #1
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию Сортировка

Есть запрос в котором получаем сумму покупателей у каждого продавца отсортированную по убыванию
Код:
SELECT T1.LastName,T1.FirstName,СУММА=(SELECT COUNT(EmployeeID)
FROM [Northwind].[dbo].[Orders]
WHERE EmployeeID=T1.EmployeeID)
FROM [Northwind].[dbo].[Employees] T1
ORDER BY СУММА DESC;
Но если у продавца нет покупателей, то он нечего не выдаст
нужно воспользоваться CASE
Код:
SELECT T1.LastName,T1.FirstName,(CASE
WHEN T2.EmployeeID=T1.EmployeeID THEN COUNT(T2.EmployeeID)
ELSE 0
END) AS SUMMA
FROM [Northwind].[dbo].[Employees] T1,[Northwind].[dbo].[Orders] T2
ORDER BY SUMMA DESC;
выдает ошибку:
Сообщение 8120, уровень 16, состояние 1, строка 2
Column 'Northwind.dbo.Employees.LastName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Подскажите, что я неправельно делаю?
shelest вне форума Ответить с цитированием
Старый 31.10.2011, 23:02   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ORDER BY 3 DESC
И COUNT чего там делает без GROUP BY
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.10.2011, 23:08   #3
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
ORDER BY 3 DESC
И COUNT чего там делает без GROUP BY
Проблема не в сортировке, а в конструкции CASE. Даже если убрать сортировку ничего не выводит.
shelest вне форума Ответить с цитированием
Старый 31.10.2011, 23:19   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А я про что написал? COUNT в вашем CASE не допустим в данном случае

в первом запросе
Код:
COALESCE((SELECT COUNT(EmployeeID)
FROM [Northwind].[dbo].[Orders]
WHERE EmployeeID=T1.EmployeeID),0)
или COUNT(*) 0 вернет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 31.10.2011 в 23:23.
Аватар вне форума Ответить с цитированием
Старый 31.10.2011, 23:35   #5
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А я про что написал? COUNT в вашем CASE не допустим в данном случае

в первом запросе
Код:
COALESCE((SELECT COUNT(EmployeeID)
FROM [Northwind].[dbo].[Orders]
WHERE EmployeeID=T1.EmployeeID),0)
или COUNT(*) 0 вернет
спасибо работает
shelest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Быстрая сортировка(сортировка хаора) с++ LustHunter Помощь студентам 3 07.10.2011 19:37
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32