2014-10-30 4 views
0

У меня есть таблица, которая имеет следующие columns-Как отсортировать имена столбцов на основе условия?

  • Инцидент ID (VARCHAR)
  • Дата создания (varchar- '01 -OCT EG-2014')
  • Статус (varchar- EG- 'open', 'closed')

Мне нужно учитывать происшествия в зависимости от статуса и диапазона дат, начиная с созданной даты.

например.

Date Range  || Open   || Closed || 
1-2 days   ||   5  ||  6 || 
2-5 days   ||   4  ||  8 || 
5-15 days  ||   10 ||  15 || 

Любая помощь будет оценена, спасибо.

+0

Как рассчитывается диапазон дат? Это время от даты создания до сегодняшнего дня? – Barmar

+0

Да, Бармар, это правильно. – PLanka

ответ

1
SELECT CASE WHEN DATEDIFF(created_date, now()) BETWEEN 1 AND 2 
       THEN '1-2 days' 
      WHEN DATEDIFF(created_date, now()) BETWEEN 3 AND 5 
       THEN '3-5 days' 
      WHEN DATEDIFF(created_date, now()) BETWEEN 6 AND 15 
       THEN '6-15 days' 
      ELSE '> 15 days' 
     END AS DateRange, 
     SUM(CASE WHEN Status = 'open' THEN 1 ELSE 0 END) AS Open, 
     SUM(CASE WHEN Status = 'closed' THEN 1 ELSE 0 END) AS Closed 
FROM YourTable 
GROUP BY DateRange 
+0

В нем указано «Отсутствие правильной круглой скобки» в Status = 'open'. Что-нибудь, что я мог пропустить? – PLanka

+0

Вы используете MySQL или Oracle? Мой ответ должен работать в MySQL. – Barmar

+0

Oracle. Извините, если тег mysql ввел вас в заблуждение. Это было автоматически предложено, когда я сформулировал вопрос. – PLanka