2013-06-24 2 views
0

У меня есть таблица, имеющая структура следующегоквартала года мудрый Filteration в SQL

id cust_id target month year fiscal_ID 
1 234  50  4  2013 1 
2 234  50  5  2013 1 
3 234  50  6  2013 1 
4 234  150 7  2013 1 
5 234  150 8  2013 1 
6 234  150 9  2013 1 

мне нужно, чтобы получить результат следующего

cust_id target quarter year fiscal_ID 
234  150 Q1  2013 1 
234  450 Q2  2013 1 

месяцев 4,5,6 в Q1, 7, 8,9 в Q2 и т. Д.

ответ

2

Поскольку вы храните month и year в отдельных столбцах, одним из способов получения результата является использование производной таблицы, которая ссылается на месяц и квартал, и вы присоединяетесь к что данные:

select t.cust_id, 
    sum(target) target, 
    d.qtr, 
    t.year, 
    t.fiscal_id 
from yourtable t 
inner join 
(
    select 4 mth, 'Q1' qtr union all 
    select 5 mth, 'Q1' qtr union all 
    select 6 mth, 'Q1' qtr union all 
    select 7 mth, 'Q2' qtr union all 
    select 8 mth, 'Q2' qtr union all 
    select 9 mth, 'Q2' 
) d 
    on t.month = d.mth 
group by t.cust_id, d.qtr, t.year, t.fiscal_id; 

См. SQL Fiddle with Demo.

+0

Сэр, что мне делать, если мне это нужно: cust_id target quarter year financial_ID 234 150/450 Q1/Q2 2013 1 –

+0

@PhilipSams Пожалуйста, задайте новый вопрос с обновленными требованиями. – Taryn

+0

У меня есть edite и добавлен. Пожалуйста, проверьте это bluefeet. –