2017-02-22 9 views
1

Привет всем, ребята у меня есть техническая проблема, у меня есть таблица с записями, как это:Mysql запрос: Количество столбцов

DATE  SIP DURATION TYPE 
2017-02-22 670 9  NO ANSWER 
2017-02-22 670 9  ANSWER 
2017-02-22 670 9  ANSWER 
2017-02-22 671 9  NO ANSWER 

я хотел бы иметь результат:

SIP DURATION NOANSWER ANSWER 
670  18   1  2 
671  9   1  0 

я 'сделайте такой запрос:

select 
DISTINCT(SIP), 
(select count(*) FROM table where TYPE="ANSWERED") 
(select count(*) FROM table where TYPE="NO ANSWERED") 
from table 

но результат подсчитывает всю запись на столе, лучше использовать группу?

жаль я нуб :( спасибо за время Marco

ответ

1

В этом случае проще использовать GROUP BY с условным SUM и COUNT, как в следующем примере:

SELECT 
    SIP, 
    SUM(CASE TYPE WHEN 'ANSWER' THEN DURATION ELSE 0 END) AS DURATION, 
    COUNT(CASE WHEN TYPE = 'NO ANSWER' THEN 1 ELSE NULL END) AS NOANSWER, 
    COUNT(CASE WHEN TYPE = 'ANSWER' THEN 1 ELSE NULL END) AS ANSWER 
FROM table_name 
GROUP BY SIP 

Демонстрация:http://sqlfiddle.com/#!9/b1142/2/0

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

  • Нет связанных вопросов^_^