2014-10-07 3 views
0

у меня есть таблица со следующей структурой:Выполнение вычитания на той же самой колонке и той же колонке в зависимости от условий

employeeid SalaryType Amount 
------------------------------ 
100   w   200 
100   s   100 
210   w   300 
210   s   50 
300   w   90 
300   s   30 

на основе этих записей, которые я хочу, чтобы получить следующий результат:

emloyeeid Amount (difference between W and S) 
----------------------------------------------- 
100   100 
210   250 
300   60 

как достигнуть этого результата?

ответ

1

Например ..

SELECT t1.employeeid, t1.amount - t2.amount FROM 
    (SELECT * FROM tablename WHERE salaryType = 'w') t1, 
    (SELECT * FROM tablename WHERE salaryType = 's') t2 
WHERE t1.employeeid = t2.employeeid 
0

Вы можете использовать LEFT JOIN, чтобы решить вашу проблему

SELECT employeeid, t1.amount - t2.amount FROM 
mytable AS t1 LEFT JOIN mytable AS t2 
ON t1.employeeid = t2.employeeid 
AND t1.SalaryType = 'w' AND t2.SalaryType = 's' 
Смежные вопросы