dummify一列

时间:2015-11-30 12:09:27

标签: mysql sql

我正在使用这种结构处理相同的旧死亡原因数据库:

+--------------------+---------------+------+-----+---------+-------+
| Field              | Type          | Null | Key | Default | Extra |
+--------------------+---------------+------+-----+---------+-------+
| decesso            | int(1)        | NO   |     | NULL    |       |
| anno               | year(4)       | NO   |     | NULL    |       |
| mese               | int(2)        | NO   |     | NULL    |       |
| data               | varchar(10)   | NO   |     | NULL    |       |
| age                | int(3)        | NO   |     | NULL    |       |
| sex                | enum('M','F') | NO   |     | NULL    |       |
| cod_comune         | int(6)        | NO   |     | NULL    |       |
| nome_comune        | varchar(40)   | NO   |     | NULL    |       |
| causa_fin          | varchar(4)    | NO   |     | NULL    |       |
| cod_tit            | varchar(3)    | YES  |     | NULL    |       |
+--------------------+---------------+------+-----+---------+-------+
实际上,每一行都是死亡记录,无论其原因,城镇,年龄和事物如何。特别是,cod_tit列包含宏观疾病家族的代码,例如I = cancer, II = heart diseases等等;因此,此列的组成方式与I,I,IX,XX,...

类似

我需要的是每一种疾病都有一个专栏,如果这个人为另一个原因而死,那就是0,如果他因为这个原因而去世,则为1;像这样的矩阵

+--------------------------------------------+
| age | sex | town | dis_I | dis_II | dis_III|
+--------------------------------------------+
| 85  | M   | 0001 | 1     | 0      | 0      |
| 59  | M   | 0001 | 0     | 0      | 1      |
| 78  | F   | 0200 | 0     | 1      | 0      |
| 90  | M   | 0032 | 0     | 0      | 2      |
| ......                                     |
| and so on                                  |
+--------------------------------------------+

可以在mysql中使用吗?

1 个答案:

答案 0 :(得分:1)

您可以使用CASE声明

SELECT age,sex,town,
       CASE cod_tit WHEN 'I' THEN 1 ELSE 0 END AS dis_I ,
       CASE cod_tit WHEN 'II' THEN 1 ELSE 0 END AS dis_II ,
...
FROM tableName