我有一个MYSQL表,它有大约350列。有大多数'空'值,我需要在一个中合并多个行,并用非空值替换'空'值。我的表看起来像这样:
id|col1|col2|col3|cola|col_b|...|col350
1 |12 |4 |3 |-77 |-77 |...|-77
2 |12 |-77 |-77 |2 |-77 |...|-77
3 |12 |-77 |-77 |-77 |6 |...|-77
4 |12 |-77 |-77 |-77 |-77 |...|6
5 |13 |3 |-77 |-77 |-77 |...|-77
6 |13 |-77 |5 |-77 |-77 |...|-77
...
-77
是空值的替代品。在col1
中,是一个属于一起的数据集的id。
我需要一个select查询来将非'empty'值合并到每个col1-id的一个结果行。对于col1-id 12,它应该如下所示:
1 | 12 | 4 | 3 | 2 | 6 | ... | 6
有人知道如何做到这一点吗?
答案 0 :(得分:2)
SELECT col1,
MAX(CASE WHEN col2 <> -77 THEN col2 END) AS col2,
MAX(CASE WHEN col3 <> -77 THEN col3 END) AS col3,
MAX(CASE WHEN cola <> -77 THEN cola END) AS cola,
MAX(CASE WHEN col_b <> -77 THEN col_b END) AS col_b,
... and so on
MAX(CASE WHEN col350 <> -77 THEN col350 END) AS col350
FROM YourTable
GROUP BY col1