group concat — group_concat не работает в переполнении стека

У меня есть следующая таблица MySQL:
таблица: ставка

id | compid | itemid | rate | year
1 |       1 |       1 |  2.0 | 2015
2 |       1 |       2 |  4.2 | 2015
3 |       1 |       3 |  2.3 | 2015
4 |       2 |       1 |  3.0 | 2015
5 |       2 |       2 |  4.0 | 2015
6 |       2 |       3 |  2.5 | 2015
7 |       3 |       1 |  2.3 | 2015
8 |       3 |       2 |  4.5 | 2015
9 |       3 |       3 |  2.8 | 2015

Если я использую следующий запрос MySQL от php, он работает хорошо:

SELECT itemid, GROUP_CONCAT(rate) FROM bid GROUP BY itemid

Результат:

Array ( [itemid] => 1 [GROUP_CONCAT(rate)] => 2.0,3.0,2.3 )
Array ( [itemid] => 2 [GROUP_CONCAT(rate)] => 4.2,4.0,4.5 )
Array ( [itemid] => 3 [GROUP_CONCAT(rate)] => 2.3,2.5,2.8 )

Но если я использую следующий запрос, он не работает:

SELECT itemid, GROUP_CONCAT(CASE WHEN compid=1 THEN rate ELSE 0 END as company01, CASE WHEN compid=2 THEN rate ELSE 0 END as company02, CASE WHEN compid=3 THEN rate ELSE 0 END as company03) FROM bid GROUP BY itemid

Что является ошибкой в ​​моем втором запросе SELECT и как добиться этого с помощью GROUP_CONCAT?

1

Решение

Если вы хотите сделать столбцы, может быть, этот запрос.

SELECT itemid,
MAX(CASE WHEN compid = 1 THEN rate END) as 'company01',
MAX(CASE WHEN compid = 2 THEN rate END) as 'company02',
MAX(CASE WHEN compid = 3 THEN rate END) as 'company03'
FROM bid
GROUP BY itemid
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]