2015-01-10 180 views
0

我需要一个查询,显示工作人员尚未付款的JobID,但公司已付款。以下是表列和样本数据:通过聚合过滤SQL查询结果

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 

但我需要的是当操作员已得到0只是JobIDs的结果和公司> 0。我想结果应该是这样的,但我想不通的查询可以这样做:


JobID Worker Company 
2  0  75 

回答

1

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

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

是的,完美的作品。很简单。 – TZERO

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

似乎平淡做...可能是我did'nt明白的问题