1

以下の画像を出力する以下のmysqlクエリがあります:

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

ここに画像の説明を入力してください このクエリは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

次のエラーが発生しました:

エラーは#1111-グループ関数の使用が無効です。

いつものようにアドバイスをいただければ幸いです。

4

2 に答える 2

1

あなたはこれを行うことができます:

SELECT 
  *,
  CONCAT(approved, ' / ', totalloads) AS count, 
FROM
(
    SELECT
      v.invoicenumber,
      v.invoicedate,
      v.haulier,
      v.transporttype,
      COUNT(v.loadnumber)                    AS totalloads,
      SUM(v.cost)                            AS totalcost, 
      SUM(if(invoiceapproved = 'yes', 1, 0)) As approved 
    FROM v2loads v  
    WHERE v.invoiced='yes'
    GROUP BY invoicenumber
) t
WHERE totalloads <> approved;
于 2012-12-21T08:12:02.010 に答える
0
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 
having (count(v.loadnumber))<>(SUM(if(invoiceapproved = 'yes', 1, 0)))
于 2012-12-21T08:13:11.347 に答える