按聚合过滤SQL查询结果

时间:2015-01-10 17:18:16

标签: sql sql-server

我需要一个查询,显示工作人员尚未获得工资的工作ID,但公司已获得工资。以下是表格列和示例数据:

tblInvoices columns:
-------------------
JobID
InvoiceID
WorkerPaidAmountTotal
CompanyPaidAmountTotal


Sample data
-----------

JobID | InvoiceID | WorkerPaidAmountTotal | CompanyPaidAmountTotal

1         30           100                  150
1         31           0                    100
2         32           0                    75
3         33           25                   50
3         34           10                   30
4         35           0                    0

我知道如何获得支付给工人或公司的金额的总和。结果如下所示:


JobID   Worker  Company
1       100     250
2       0       75
3       35      80
4       0       0

但我需要的是JobIDs的结果,其中Worker有0,公司> 0。我想要的结果应该是这样,但我无法弄清楚这样做的查询:


JobID   Worker  Company
2       0       75

2 个答案:

答案 0 :(得分:1)

使用HAVING子句过滤组。试试这个:

SELECT jobid,
       Worker=Sum(WorkerPaidAmountTotal),
       Company=Sum(CompanyPaidAmountTotal)
FROM   tablename
GROUP  BY jobid
HAVING Sum(WorkerPaidAmountTotal) = 0
       AND Sum(CompanyPaidAmountTotal) > 0 

答案 1 :(得分:0)

select jobid, worker, company where WorkerPaidAmountTotal = 0 and CompanyPaidAmountTotal

似乎很明白这样做......可能是我确实理解了这个问题