0

おはようございます。日付フィールドが完了し、合計行数があるケースを表示するmysqlクエリです。これを合計ケースに対して計算したいのですが、1つのクエリ内でこれらすべてを実行できるかどうかわかりません。たとえば、現在のクエリ出力

Aug Sep Nov Total
10  20  20  50

そのためのコード

     SELECT * from(
     Select Count(b.CaseID) As TotDB 
     from tblcontacts a 
     Inner Join  tblcases b 
     On a.ContactID = b.ContactAssignedTo)a
CROSS JOIN
    (Select
  Sum(Month(b.StatusSubmittedDate) = 8) As Aug,
  Sum(Month(b.StatusSubmittedDate) = 9) As Sep,
  Sum(Month(b.StatusSubmittedDate) = 10) As Oct,
  Count(b.CaseID) As Total,
  ROUND (100*Count(b.CaseID)/Count(b.CaseID),2) As Conversion
From
  tblcontacts a Inner Join
  tblcases b On a.ContactID = b.ContactAssignedTo
Where
  b.StatusSubmittedDate > '2012 - 01 - 01'
Group By
  a.ContactFullName With Rollup
Having
  Sum(b.CaseCommission) > 0.01)b 

出力に必要なのは以下のとおりなので、上記のTotDB行を追加して、それが役立つかどうかを確認しましたが、役に立ちませんでした。私が知る必要があるのは、すべてのレコードを表示するためにwhere/having句をバイパスする列をこのクエリに含めることができるかどうかです

Aug Sep Nov Tot TotDB %Converted
10  20  20  50  100   50%

ありがとう

4

2 に答える 2

1

おそらく、次のようにする必要があります。

select Aug,Sep, Nov, Tot,TotDB,(Tot/TotDB*1.0)*100 as '%Converted' 
 from 
(SELECT * from(
     Select Count(b.CaseDate) As TotDB 
     from tblcontacts a 
     Inner Join  tblcases b 
     On a.ContactID = b.ContactAssignedTo)a
CROSS JOIN
    (select  
      Sum(Month(b.StatusSubmittedDate) = 9) As Sep,
      Sum(Month(b.StatusSubmittedDate) = 10) As Oct,
      Sum(Month(b.StatusSubmittedDate) = 11) As Nov,
      Count(b.CaseID) As Total,
    From tblcontacts a 
    Inner Join tblcases b 
    On a.ContactID = b.ContactAssignedTo
    Where
      b.StatusSubmittedDate > '2012-01-01'
    Group By
      a.ContactFullName With Rollup
    Having
      Sum(b.CaseCommission) > 0.01)b)c
于 2012-09-06T12:43:24.643 に答える
0

1 つの単純なクエリでそれを行うことはできません。

これを行う正しい方法は、where 句を使用せずに 2 番目のクエリを実行することです。本当。

1 つのクエリでこれを行う必要がある場合は、少なくともユニオンを使用します。

/* old query */
SELECT a,b,c from t1,t2,t3 where d=e group by a having b>f
UNION
select 'total',COUNT(*),NULL /*need the same amount of rows*/
from t1,t2,t3 

そして、クライアント側で行をa='total'別の方法で処理するようにします。しかし、それはハックです。2 つのクエリを使用することをお勧めします。

于 2012-09-06T12:53:09.160 に答える