COUNT из одного столбца и разделить его на 2 столбца - PullRequest
2 голосов
/ 21 февраля 2012

Это моя таблица "rating" в моей базе данных.

attraction      customer      rate
------------------------------------
attrac1         cust1         like
attrac2         cust1         dislike 
attrac1         cust2         like

Какой SQL я должен написать, чтобы вывод стал таким

attraction      like       dislike
----------------------------------
attrac1           2           0
attrac2           0           1

Я пробовал это

SELECT a_id,
(SELECT COUNT(rate) FROM rating WHERE rate = 'like') as 'Like',
(SELECT COUNT(rate) FROM rating WHERE rate = 'dislike') as 'Dislike'
FROM rating

Но я не могу получить желаемый результат.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012
SELECT  Attraction,
        COUNT(CASE WHEN Rate = 'Like' THEN Customer END) [Like],
        COUNT(CASE WHEN Rate = 'DisLike' THEN Customer END) [DisLike]
FROM    Rating
GROUP BY Attraction
1 голос
/ 21 февраля 2012

Это один подход:

SELECT a_id,
    SUM(Case when rate='like' then 1 else 0 end) as 'Like',
    SUM(Case when rate='dislike' then 1 else 0 end) as 'Dislike'
FROM rating
Group BY A_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...