如何在SQL中将多列组合成一列?

时间:2018-03-19 02:06:02

标签: sql google-sheets

根据Google表格输入,我从用户那里收集了以下数据

+-------+--------+--------+--------+
| Name  |  Col1  |  Col2  |  Col3  |
+-------+--------+--------+--------+
| name1 |        |        |    1   |
| name2 |   3    |        |        |
| name3 |        |   2    |        |
+-------+--------+--------+--------+

只有Col1,Col2或Col3中的一个包含值

我想要的是创建一个像这样的视图

+-------+--------+
| Name  |  Col   |
+-------+--------+
| name1 |    1   |
| name3 |    2   |
| name2 |    3   |
+-------+--------+

SQL命令不仅应合并Col1,Col2和Col3,还应根据它对新Col进行排序。

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以使用coalesce()

select name, coalesce(col1, col2, col3) as col
from t
order by col;

答案 1 :(得分:1)

考虑到数据的特殊性,下面最简单的方法(我' - 我的答案很好,但有点过于复杂)

=sort(arrayformula({H1:H6, I1:I6 + J1:J6 + K1:K6}), 2, true)

enter image description here

答案 2 :(得分:0)

Sheets不支持完整的sql。

=ARRAYFORMULA(SORT({A2:A4,MMULT(--B2:D4,TRANSPOSE(B2:D2^0))},2,1))