2013-12-26 3 views
1

У меня есть таблица, которая содержит информацию о клиентах и ​​агентах. Я хочу классифицировать их по месяцам года.классифицировать данные по месяцам года

уточнить: Я хотел бы знать, сколько клиентов, которые зарегистрированы в соответствии с различными агентами в месяц года, так же, как на рисунке ниже:

enter image description here


+0

'Кросс-табло' или' PIVOT' - выберите свой выбор. –

ответ

4

Вы можете использовать PIVOT:

SELECT AGENT_CODE, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] 
FROM 
(SELECT CUSTOMER_ID, AGENT_CODE, MONTH(DATE) as m 
FROM Test) t 
PIVOT 
(
COUNT (CUSTOMER_ID) 
FOR m IN 
([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) 
) AS pvt; 

возвращает

AGENT_CODE 1 2 3 4 5 6 7 8 9 10 11 12 
100   1 0 0 0 2 1 1 0 1 0 0 3 
101   0 0 2 0 0 0 1 0 0 1 1 0 
102   0 0 0 0 0 0 1 1 0 0 0 0 
103   0 0 0 1 0 0 0 0 0 0 0 0 

добавить псевдонимы столбцов, чтобы получить JAN, FEB и т. Д. Вместо цифр в виде столбцов.

Работа демо: http://sqlfiddle.com/#!6/673cb/7

1

SELECT * FROM (

ВЫБРАТЬ год (ДАТА) в [год], слева (datename (месяц, день), 3), как [месяц], AGENT_CODE в УНТ yourTable

) при s- ОСИ ( отсчет (AGENT_CODE) ЗА [месяц] IN (январь, февраль, март, апрель, может, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь) ) AS pivot

Смежные вопросы