我有下面的數據:減去與在表中的負值正使用子查詢
| Amount | Type | Employee |
| ----- | ---- | -------- |
| 500 | A | 001 |
| 200 | B | 001 |
| 300 | A | 002 |
| 200 | A | 002 |
| 100 | B | 002 |
在上面的情況下,所有Type
A柱是正值,並Type
B是負值。
我需要計算每個員工的量具有正減去負作爲最終的結果,這意味着A型負型B.
所以員工001應具有結果500 - 200 = 300
,及僱員002是300 + 200 - 100 = 400
。
我有以下不完整的查詢:
SELECT
(SELECT SUM(Amount) FROM A WHERE Type = 'A') -
(SELECT SUM(Amount) FROM A WHERE Type = 'B') As Payable, Employee
FROM Payroll A
WHERE Company = @Company AND Month = @Month AND Year = @Year
GROUP BY Employee
在上面的查詢,語句SELECT SUM(Amount) FROM A WHERE Type = 'A'
正在試圖獲得這已經是由公司,月和年柱過濾Payroll
表的正數。它不起作用,因爲A
未被識別爲有效的對象。
那麼我應該怎麼做才能從篩選的Payroll
表中獲取數據,而不是必須將WHERE
條件再次放入兩個子查詢中?
編輯:
感謝卡納安和托馬斯的建議,但我仍然有問題,實現願望的結果。現在,這是我與CASE
SELECT
SUM(CASE WHEN Type = 'B' THEN -Amount ELSE Amount END) As Payable, Employee
FROM Payroll A
WHERE Company = @Company AND Month = @Month AND Year = @Year
GROUP BY Employee
修改後的查詢這是查詢的結果是:
| Payable | Employee |
| ----- | -------- |
| 500 | 001 |
| -200 | 001 |
| 500 | 002 |
| -100 | 002 |
而是總結的價值,無論是正面和負面的顯示爲不同的行。
請幫忙嗎?