对多列

时间:2017-06-29 12:30:12

标签: mysql

我有一张这样的表:

id | opt1 | opt2 | opt3 
1  | valX | valY | valY 
2  | valX | valX | valY 
3  | valY | valZ | valX 

所以我需要准备数据以显示PIE图表,它需要看起来像:

id | valX | valY | valZ 
1  | 1 | 2 | 0 
2  | 2 | 1 | 0 
3  | 1 | 1 | 1 

编写mysql查询的正确方法是什么? 我想我必须首先列出所有列但后续步骤?

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT ID,
       CASE WHEN opt1='valX' THEN 1 ELSE 0 END + CASE WHEN opt2='valX' THEN 1 ELSE 0 END + CASE WHEN opt3='valX' THEN 1 ELSE 0 END AS valX,
       CASE WHEN opt1='valY' THEN 1 ELSE 0 END + CASE WHEN opt2='valY' THEN 1 ELSE 0 END + CASE WHEN opt3='valY' THEN 1 ELSE 0 END As valY,
       CASE WHEN opt1='valZ' THEN 1 ELSE 0 END + CASE WHEN opt2='valZ' THEN 1 ELSE 0 END + CASE WHEN opt3='valZ' THEN 1 ELSE 0 END As valZ
FROM TableName 

答案 1 :(得分:0)

标准化设计可能如下所示:

id option_id option_value
 1         1 X 
 1         2 Y 
 1         3 Y 
 2         1 X 
 2         2 X 
 2         3 Y 
 3         1 Y 
 3         2 Z
 3         3 X

从这里开始,您的查询很简单。