【发布时间】:2020-08-28 03:46:44
【问题描述】:
嗨,我有一个动态表,看起来像这样,
CREATE TABLE Table1
(`ID_Question` varchar(2), `ID_Solution` varchar(4), `ID_Mapping` int)
;
INSERT INTO Table1
(`ID_Question`, `ID_Solution`, `ID_Mapping`)
VALUES
('B1', 'GFC1', 1),
('B1', 'GFC2', 0),
('B1', 'GFC3', 0),
('B1', 'AFC1', 1),
('B1', 'AFC2', 0),
('B2', 'GFC1', 0),
('B2', 'GFC2', 1),
('B2', 'GFC3', 0),
('B2', 'AFC1', 0),
('B2', 'AFC2', 1),
('B2', 'GFC1', 0),
('B2', 'GFC2', 1),
('B2', 'GFC3', 0),
('B2', 'AFC1', 0),
('B2', 'AFC2', 1)
;
基本上是这样的,
+-------------+-------------+------------+
| ID_Question | ID_Solution | ID_Mapping |
+-------------+-------------+------------+
| B1 | GFC1 | 1 |
| B1 | GFC2 | 0 |
| B1 | GFC3 | 0 |
| B1 | AFC1 | 1 |
| B1 | AFC2 | 0 |
| B2 | GFC1 | 0 |
| B2 | GFC2 | 1 |
| B2 | GFC3 | 0 |
| B2 | AFC1 | 0 |
| B2 | AFC2 | 1 |
| B2 | GFC1 | 0 |
| B2 | GFC2 | 1 |
| B2 | GFC3 | 0 |
| B2 | AFC1 | 0 |
| B2 | AFC2 | 1 |
+-------------+-------------+------------+
我想知道我是否可以动态显示(可以添加和删除数据)如下:
+-----------+------+------+------+------+------+
| ID_SOLUSI | GFC1 | GFC2 | GFC3 | ASF1 | AFC2 |
+-----------+------+------+------+------+------+
| B1 | 1 | 0 | 0 | 1 | 1 |
+-----------+------+------+------+------+------+
| B2 | 0 | 1 | 0 | 1 | 0 |
+-----------+------+------+------+------+------+
| B3 | 1 | 0 | 0 | 0 | 1 |
+-----------+------+------+------+------+------+
我尝试过使用它,但它似乎不起作用:
SET @sql_ = (
SELECT
GROUP_CONCAT(DISTINCT(CONCAT("ID_mapping AS " , ID_Solution))
FROM table1
);
SET @SQL = CONCAT('SELECT ID_QUESTION, ',
@sql_dinamis , '
FROM tabl1
GROUP BY ID_QUESTION
WITH ROLLUP'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
如果你也能向我解释这个概念那就太好了,因为我对 SQL Query 有点烂(太棒了)
【问题讨论】:
标签: mysql sql database group-by dynamic-sql