1

私はこれを理解するのに近づいていますが、完了するにはナッジが必要です. 私のデータセットには、1 月、2 月、3 月のレコードがあります。

enter code here

Select
  cartypes.TypeName,
  Count(cartypes.TypeName) As Count,
  COUNT(MONTH(maindata.CreatedDate) = 1) As Jan,
  COUNT(MONTH(maindata.CreatedDate) = 2) As Feb
From maindata
  Inner Join cartypes
    On maindata.TypeID = cartypes.CarType_ID
Group By cartypes.TypeName

私の出力は次のようになります。

TypeName                      Count      Jan    Feb 
Accreditation Audit            23        1       0
Certificate Decision            5        1       0
Certification Decision          2        1       0
Complaint About Client          1        1       0
Customer Complaint              3        1       0
Internal Audit                  5        1       0 
Internal Finding                7        1       0
Preventative Action             1        1       0
Witness Audit                   1        0       1

各レコードのさまざまな TypeName のカウントを毎月正しく集計するために、いくつかの異なる方法を試しましたが、壁にぶつかりました。たとえば、1 月は認定監査で 23 のカウントを示し、2 月は 2 つの認定決定と 1 つの証人監査を示す必要があります。

私は十分に明確であることを願っています。

4

2 に答える 2

2

現在のクエリは、最終的なクエリに非常に近いものです。式を使用してCASE、各月の各月のカウントを取得する必要がありTypeNameます。

Select
  cartypes.TypeName,
  Count(cartypes.TypeName) As Count,
  sum(case when MONTH(maindata.CreatedDate) = 1 then 1 else 0 end) As Jan,
  sum(case when MONTH(maindata.CreatedDate) = 2 then 1 else 0 end) As Feb
From maindata
Inner Join cartypes
  On maindata.TypeID = cartypes.CarType_ID
Group By cartypes.TypeName

SQL Fiddle with Demoを参照してください。

COUNTまたは、次のように使用できますCASE

Select
  cartypes.TypeName,
  Count(cartypes.TypeName) As Count,
  count(case when MONTH(maindata.CreatedDate) = 1 then cartypes.TypeName end) As Jan,
  count(case when MONTH(maindata.CreatedDate) = 2 then cartypes.TypeName end) As Feb
From maindata
Inner Join cartypes
  On maindata.TypeID = cartypes.CarType_ID
Group By cartypes.TypeName

デモで SQL Fiddle を参照してください

両方のクエリの結果は次のとおりです。

|               TYPENAME | COUNT | JAN | FEB |
----------------------------------------------
|    Accreditation Audit |     4 |   3 |   1 |
|   Certificate Decision |     1 |   0 |   1 |
| Certification Decision |     3 |   1 |   2 |
| Complaint About Client |     3 |   3 |   0 |
|     Customer Complaint |     3 |   0 |   3 |
|         Internal Audit |     2 |   2 |   0 |
|       Internal Finding |     1 |   1 |   0 |
|    Preventative Action |     5 |   0 |   5 |
|          Witness Audit |     5 |   4 |   1 |
于 2013-03-15T16:51:04.000 に答える
1

変更することにより:

COUNT(MONTH(maindata.CreatedDate) = X) as [Jan,Feb,etc]

to

SUM(IF(MONTH(maindata.CreatedDate) = X, 1,0)) as [Jan,Feb,etc]

Jan、Feb などの列に正しい値が含まれるようになりました。これをすべての月で集計すると、TypeName の Count 値と等しくなります。

于 2013-03-15T16:59:23.480 に答える