的我有以下MySQL查詢輸出下面的圖像:MySQL的使用邏輯在where子句+無效使用組功能
select
v.invoicenumber,
v.invoicedate,
v.haulier,
v.transporttype,
count(v.loadnumber) as totalloads,
sum(v.cost) as totalcost,
concat(SUM(if(invoiceapproved = 'yes', 1, 0)),'/',count(v.loadnumber)) AS count, SUM(if(invoiceapproved = 'yes', 1, 0)) as approved
from v2loads v
where v.invoiced='yes'
group by invoicenumber
此查詢excutes 100%。
我想要做的是過濾出數量爲100%的任何行/數據。在示例輸出中,我想過濾掉髮票16,因爲它是2/2和100%。所以其中
count(v.loadnumber) <> SUM(if(invoiceapproved = 'yes', 1, 0))
如果我將此邏輯添加到where子句中,它會失敗,錯誤無效使用組函數。所以下面的代碼無法正常工作:
select v.invoicenumber,
v.invoicedate,
v.haulier,
v.transporttype,
count(v.loadnumber) as totalloads,
sum(v.cost) as totalcost,
concat(SUM(if(invoiceapproved = 'yes', 1, 0)),'/',count(v.loadnumber)) AS count,
SUM(if(invoiceapproved = 'yes', 1, 0)) as approved
from v2loads v
where v.invoiced='yes' and
(count(v.loadnumber))<>(SUM(if(invoiceapproved = 'yes', 1, 0)))
group by invoicenumber
我得到了以下錯誤:
error is
#1111
- Invalid use of group function.
讚賞一如既往任何意見。
真棒,是的,你是對的,從來沒有想過它築巢的。謝謝Mahmoud。 – Smudger