2013-05-20 8 views
0

У меня есть запрос У меня возникли проблемы с обволакиванием головы. То, что я пытаюсь сделать, это придумать отчет, в котором будут строки основных (учетные записи, бизнес и т. Д.) С столбцами типа регистрации (зачисленной, снятой и т. Д.) С подсчетами для каждого. Прямо сейчас, вот мой запрос.Подсчет Комбинации строк/столбцов по одной таблице

SELECT datatel_academicprogramofinterestidname, datatel_prospectstatusname 
FROM FilteredContact 
GROUP BY datatel_academicprogramofinterestidname, datatel_prospectstatusname 

Который дает мне любую комбинацию этих двух полей, найденных в моем столе. Я хочу получить подсчеты для каждой из отображаемых комбинаций. Строки будут полем интереса, а столбцами будет поле имя_страницы. В каждой ячейке будет подсчитываться, сколько из этой конкретной комбинации (например, Accounting/Enrolled)

Я пробовал подсчет несколькими способами, но, похоже, не может заставить его сломать столбцы Я хочу. Не знаете, как использовать команду group by, count и my where, чтобы она была отформатирована так, как я хочу. Хорошая вещь - все мои данные в одной таблице, я просто не могу заставить ее выглядеть так, как я хочу.

|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|  
+0

Вы не можете использовать 'GROUP BY' без совокупность. – Kermit

ответ

0

Возможно, вы можете использовать стержень здесь. Я создал SQL Fiddle, чтобы согласиться с этим. Если предположить, что ваш первичный ключ имя поля p_id

SELECT * 
FROM FilteredContact 
PIVOT (count(p_id) 
     for datatel_prospectstatusname IN ([Accepted], [Enrolled]) 
    ) as p 
+0

Это действительно близко к тому, что я хочу. Есть ли способ увидеть имя перспективы как столбцы вместо строки? –

+0

Да, SQL Server. –

+0

Я добавил некоторые данные к вопросу, основанному на запросе, который вы мне написали. В основном я хотел бы, чтобы в строках говорилось «Бухгалтерия, действие», «Реклама» и т. Д. Затем столбцы были бы «Принято/Зарегистрировано», а счетчики были комбинацией этих двух полей. Его легче читать, а не вертикально. Я включил подсчеты, даже если они не нужны. Это только цифры, которые я получаю прямо сейчас из моего запроса. –

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 
Смежные вопросы