Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос сотрудников по отдела с ЗП+Премия >1500  [new]
mevmix
Member

Откуда:
Сообщений: 56
Собственно есть таблица, вы брать из нее сотрудников, работающих в 10 и 30 отделах, с суммарным доходом (зарплата + комиссионные) более 1500(NULL преобразовать в конкретное значение)
USE TestDB
SELECT [ENAME],[SAL],isnull([COMM],0) as COMM,isNull(([SAL]+[COMM]), 0) as Total,[DEPTNO]
FROM [user01].[EMP]
WHERE ([SAL]+[COMM])> 1500 and [DEPTNO] = 10 or [DEPTNO] = 30


Не могу понять что не так, значение в Total может быть равно 0 если в COMM ноль
и если ставить скобки [DEPTNO] = 10 or [DEPTNO] = 30, то выводит только 30 отдел
в чем ошибка
Спасибо

К сообщению приложен файл. Размер - 28Kb
26 янв 14, 11:46    [15470300]     Ответить | Цитировать Сообщить модератору
 Re: Запрос сотрудников по отдела с ЗП+Премия >1500  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
В перечне выборки COMM обернули в ISNULL, а в WHERE кляузе - нет.
26 янв 14, 11:59    [15470328]     Ответить | Цитировать Сообщить модератору
 Re: Запрос сотрудников по отдела с ЗП+Премия >1500  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Так же забыли про приоритет логических операций. Возьмите OR по отделам в скобки.
26 янв 14, 12:00    [15470331]     Ответить | Цитировать Сообщить модератору
 Re: Запрос сотрудников по отдела с ЗП+Премия >1500  [new]
mevmix
Member

Откуда:
Сообщений: 56
pkarklin
В перечне выборки COMM обернули в ISNULL, а в WHERE кляузе - нет.
Так же забыли про приоритет логических операций. Возьмите OR по отделам в скобки.


при таком раскладе тоже самое

SELECT [ENAME]
      ,[SAL]
      ,isnull([COMM],0) as COMM
      ,isNull(([SAL]+[COMM]), 0) as Total
      ,[DEPTNO]
      
  FROM [TestDB].[user01].[EMP]
  WHERE (isnull(([SAL]+[COMM]),0)> 1500)and([DEPTNO]=30)or([DEPTNO]=(10))


К сообщению приложен файл. Размер - 22Kb
26 янв 14, 12:05    [15470342]     Ответить | Цитировать Сообщить модератору
 Re: Запрос сотрудников по отдела с ЗП+Премия >1500  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
WHERE [SAL] + ISNULL([COMM], 0) > 1500 AND [DEPTNO] IN (30, 10)
26 янв 14, 12:10    [15470356]     Ответить | Цитировать Сообщить модератору
 Re: Запрос сотрудников по отдела с ЗП+Премия >1500  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
И здесь тоже неправильно:

     ,isNull(([SAL]+[COMM]), 0) as Total


ЗЫ. Надеюсь, нет сотрудников без ЗП, но с премией.
26 янв 14, 12:12    [15470361]     Ответить | Цитировать Сообщить модератору
 Re: Запрос сотрудников по отдела с ЗП+Премия >1500  [new]
mevmix
Member

Откуда:
Сообщений: 56
pkarklin
И здесь тоже неправильно:

     ,isNull(([SAL]+[COMM]), 0) as Total


ЗЫ. Надеюсь, нет сотрудников без ЗП, но с премией.


Нет с ЗП ноль нет.
Спасибо все заработало\ошибку понял, логично зачем SAL и COMM в ISNULL
Спасибо
26 янв 14, 12:17    [15470369]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить