2015-08-12 2 views
-4

1) Как найти только те записи, которые имеют как положительное, так и отрицательное количество, например, в приведенном ниже примере, как записи для ABC, которые имеют положительный и один отрицательный.Простой запрос T-SQL

Name Tool Security QUANTITY PRICE 
    ABC  ML  XXX  100   50  
    ABC  DB  XXX -50   50  
    XYZ  CS  YYY  30   30 

2) Как суммировать положительные и отрицательные, и сделать один рекорд, как

Name    Quantity 
ABC    50 
XYZ    30 

3) Средняя зарплата тех сотрудников, которые не являются менеджерами.

ID Employee salary  ManagerID 
1 ABC  300  3 
2 DEF  200  5 
3 GHI  550  6 
4 JKL  500  5 
5 MNO  600  3 
6 PQR  600  6 
7 STU  550  NULL 
+0

Это не вопрос. – Bulat

+0

Что называется таблицей? – Jodrell

ответ

1

Для 1

select t1.* from table as t1 
inner join 
(
    select Name from table 
    group by Name 
    HAVING min(Quantity)<0 and max(Quantity)>0 
) as t2 on t1.Name=t2.Name 

Другие вопросы легко и поставить некоторые усилия

+0

Мне нужны целые совпадающие записи не только. – DJay

+0

См. Отредактированный ответ – Madhivanan

0

ONE: Используйте GROUP BY и HAVING

SELECT name, quantity 
FROM yourtable 
GROUP BY name 
HAVING MIN(quantity) < 0 AND MAX(quantity) > 0 

TWO: Используйте SUM и GROUP BY

SELECT name, SUM(quantity) 
FROM yourtable 
GROUP BY name 

ТРЕТИЙ: Использование AVG

SELECT AVG(Salary) 
FROM yourtable 
WHERE ManagerID IS NULL 
+0

@ Matt- Первый не работает. количество не должно быть частью выбора. Последнее не просто. Мне нужно, чтобы все сотрудники, которые не являются менеджерами, а не работники, у которых нет менеджеров. Я могу это сделать, и это не включает последний элемент с нулевым значением, и если я удалю нулевую проверку из подзапроса, тогда он даст мне пустой набор. Выберите avg (зарплата) у Employee, где идентификатор не включен (выберите managerid из Employee, где managerid не является нулевым) – DJay

Смежные вопросы