我在SQL Server 2012中有以下两个表:
|=================|
|ID|SALARY|EXCLUDE|
| 1| 90000| NULL|
| 1| 65000| NULL|
| 1| 10000| Y|
| 2| 85000| NULL|
| 2| 4500| Y|
| 2| 1000| Y|
| 3| 75000| NULL|
|=================|
|===========|
|ID|CONTRACT|
| 1| 155000|
| 2| 85000|
| 3| 75000|
|===========|
我需要编写一个返回以下结果的查询:
|===========================|
|ID|CONTRACT|EXCLUDED SALARY|
| 1| 155000| 10000|
| 2| 85000| 5500|
| 3| 75000| NULL|
|===========================|
换句话说,如果EXCLUDE为Y,我需要在第一个表中为每个ID求和SALARY字段。我知道如何对salary列进行求和,但我不明白如何包含EXCLUDE逻辑。非常感谢您给予我的任何帮助!谢谢!
答案 0 :(得分:1)
您可以使用条件聚合仅计算总和中排除标志为Y的工资:
sum(case when exclude = 'Y' then salary end)
答案 1 :(得分:1)
试试这个:
SELECT
A.ID,
B.CONTRACT,
SUM(CASE WHEN EXCLUDE = 'Y' then SALARY END) EXCLUDED_SALARY
FROM TABLE_SALARY A
INNER JOIN TABLE_CONTRACT B
ON A.ID = B.ID
GROUP BY A.ID, B.CONTRACT