2016-03-05 126 views
0

您好我正在滥用follwing查询的aggregate:sum()错误。这有什么问题。SQLite错误 - 错误使用aggregate:sum()

> Select storeid, supplierid, ordernumber, inwardnumber, returnid, 
> taxinvoiceno, ordervalue, sum(CASHPAID) as 'CASHPAID', balancedue, 
> paidamt, paiddate, sum(ADJUSTMENT) as 
> ADJUSTMENT,ordervalue+sum(ADJUSTMENT) as total from 
> supplierpaymentstabledb where storeid = 10008 and total!=CASHPAID 
> group by inwardnumber 

回答

3

是良好实践的问题,你应该把所有的非聚集列group by子句。然后,在汇总列条件应该在having条款,而不是一个where条款:

Select storeid, supplierid, ordernumber, inwardnumber, returnid, 
     taxinvoiceno, ordervalue, sum(CASHPAID) as CASHPAID, balancedue, 
     paidamt, paiddate, sum(ADJUSTMENT) as ADJUSTMENT, 
     ordervalue + sum(ADJUSTMENT) as total 
from supplierpaymentstabledb 
where storeid = 10008 
group by storeid, supplierid, ordernumber, inwardnumber, returnid, 
     taxinvoiceno, ordervalue, balancedue, 
     paidamt, paiddate 
having total <> CASHPAID; 
+0

我想按inwardnumber只。我可以做吗? – Seenu69

+0

@ Seenu69在选择列表中,您可以具有聚合或分组列。我知道的唯一例外是MySQL和他们的“Extended Group By”。如果你想只在一列上组合,另一列必须是聚合。您可以使用min(col)或max(col)作为其他非分组列(但当然是sum())。 – mauro

+0

@ Seenu69。 。 。是的,但你需要弄清楚你想要的其他栏目(如果你需要的话)。 –