2013-10-11 2 views
1

Я хочу показать открытые и закрытые подсчеты выбранного диапазона дат от фильтра. Данные будут сгруппированы по продукту организации, месяцу и неделе. Но проблема в том, когда я вычисляю открытые и близкие недели. Open имеет отдельный столбец и рядом имеет разные .. Может группу на любом одном поле, как я хочу это:Группировка по неделям

Week    Open   Close 

0     3   5 
1     2   0 

Если дата Close не в неделе 2 й дата открыта существует в 2 неделе она должен выглядеть так:

Week   Open  Close 

2    3   0 

Как сгруппировать его по обоим столбцам?

Пожалуйста, помогите.

+0

Я не очень понять, что вы хотите. Если вы хотите, чтобы общая сумма открытия и закрытия в неделю вы можете использовать: 'SELECT SUM (open) AS totalOpen, SUM (close) AS totalClose FROM table GROUP BY week'. И подумайте о переименовании «недели» в нечто другое, так как это также функция MySQL. – davey

+0

Вы должны поделиться своим запросом. – AgRizzo

+0

Я использую функцию mysql week для вычисления недели. Но проблема в том, что он запрашивает поле столбца. Это отличается как от открытых, так и от закрытых столбцов, поэтому я должен использовать это поле. Я использую WEEK (дата, 5) - НЕДЕЛЯ (DATE_SUB (поле даты, ИНТЕРВАЛ ДЕЙОФОНТ (датафинал) -1 ДЕНЬ), 5) в качестве недели для расчета недели. Как открытые, так и закрытые, дающие разное количество недель в зависимости от их значений – user2870894

ответ

0

Пример, как группировать открытые и закрытые недели.

SELECT Organization, Product, Month, 
     week, 
     sum(open) AS open, 
     sum(close) AS close 
FROM (

    SELECT Organization, Product, Month, 
      open_week AS week, 
      count(*) AS open, 
      0 AS close 
    FROM tab 
    GROUP BY Organization, Product, Month, open_week 

    UNION ALL 

    SELECT Organization, Product, Month, 
      close_week AS week, 
      0 AS open, 
      count(*) AS close 
    FROM tab 
    GROUP BY Organization, Product, Month, close_week 

) alias 
GROUP BY Organization, Product, Month, week 
ORDER BY Organization, Product, Month, week 

демо включены ->http://www.sqlfiddle.com/#!2/01ac3/1

Для простоты, пример использует month, close_week и open_week
вместо функций, как это:
WEEK(datefield,5) - WEEK(DATE_SUB(datefield, INTERVAL DAYOFMONTH(datefield)-1 DAY),5)