0

頭を悩ませている質問があります。私がやろうとしているのは、メジャー (会計、ビジネスなど) の行と、登録の種類 (登録、撤回など) の列とそれぞれのカウントを含むレポートを作成することです。今、ここに私の質問があります。

SELECT datatel_academicprogramofinterestidname, datatel_prospectstatusname
FROM FilteredContact
GROUP BY datatel_academicprogramofinterestidname, datatel_prospectstatusname

これにより、テーブルにあるこれら 2 つのフィールドのすべての組み合わせが得られます。表示する組み合わせごとにカウントを取得したい。行はinterestidnameフィールドになり、列はprospectstatusnameフィールドになります。すべてのセルには、その特定の組み合わせ (会計/登録済みなど) の数がカウントされます。

複数の方法でカウントを試みましたが、希望どおりに列を分割できないようです。group by、count、および my where 句をすべて組み合わせて使用​​して、希望どおりにフォーマットする方法がわかりません。良いことは、すべての情報が 1 つのテーブルにあることです。思い通りに表示することはできません。

|Accounting (BS)                             | Accepted | 25|   
|Acting (BFA)                                | Accepted | 32|    
|Advertising & Marketing Communications (BA) | Accepted | 29|  
|American Studies (BA)                       | Accepted |  2|    
|Accounting (BS)                             | Enrolled |  5|    
|Acting (BFA)                                | Enrolled | 17|    
|Advertising & Marketing Communications (BA) | Enrolled | 40|  
|American Studies (BA)                       | Enrolled | 10|    
4

2 に答える 2

0

CASE集計関数と式を使用して、データの行を列に簡単に変換できます。

select interestidname, 
  sum(case when datatel_prospectstatusname = 'Enrolled' then 1 else 0 end) Enrolled,
  sum(case when datatel_prospectstatusname = 'Accepted' then 1 else 0 end) Accepted
from FilteredContact
group by interestidname
于 2013-05-20T21:31:44.963 に答える
0

ここでピボットを使用できる場合があります。これに合わせてSQL Fiddleを作成しました。主キー フィールド名が p_id であると仮定します。

SELECT *
FROM FilteredContact 
PIVOT ( count(p_id)
        for datatel_prospectstatusname IN ([Accepted], [Enrolled])
      ) as p
于 2013-05-20T20:52:26.213 に答える