MySQL выбрать количество отдельных значений в отдельных столбцах

Я хочу получить количество строк для каждого отдельного значения в столбце A, сгруппированных по столбцу B следующим образом:

------------------------------------------------------
| B | AValue1 | AValue2 | Avalue3 | AValue4 | ......  |
------------------------------------------------------
|B1 |    x    |    x    |    x    |    x    |    x    |
|B2 |    x    |    x    |    x    |    x    |    x    |
|...|    x    |    x    |    x    |    x    |    x    |
-------------------------------------------------------

х разные счета.
Прямо сейчас я получаю в основном те же данные, используя «Группировка по (A, B)», но в форме:

----------------------------------------------
| A         |    B     |   Count             |
----------------------------------------------
| AValue1   | BValue1  |     x               |
| ...       | ....     |     x               |
----------------------------------------------

после чего я должен преобразовать данные в PHP или на клиенте в Javascript.
Единственный способ получить первую таблицу — это сделать выбор подзапроса для каждого из значений в A, но это сводит на нет цель более простого и чистого решения.
Есть ли простой способ добиться этого в SQL или преобразование таблицы Group By — лучший подход? Заранее спасибо

0

Решение

Комментарий @ GolezTrol указал мне правильное направление. К сожалению, в MySQL нет сводных таблиц, но мне удалось решить эту проблему с помощью следующего выражения concat группы:

SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'SUM(IF(B = ''',
B,
''', 1, 0)) AS `',
B,
'`'
)
) INTO @sql
FROM table
SET @sql = CONCAT('SELECT A, ', @sql, ' FROM table GROUP BY A');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector