【发布时间】:2020-08-31 07:56:51
【问题描述】:
我有一个表格,其中每一行都有一些布尔字段,如下所示:
user_id | USD | EUR | CAD | ....
1 | 1 | 1 | 0 | ....
2 | 0 | 1 | 1 | ....
我需要把它转换成这样的:
user_id | currency
1 | USD
1 | EUR
2 | EUR
2 | CAD
我设法用大量的 UNION(每种货币一个)构造了一个丑陋的 SQL,但我觉得这不是最好的方法。帮助任何人?
附: 此查询将在 AWS Athena 上执行,因此我担心成本,我希望为此提供最优化的查询。
【问题讨论】:
-
您使用的是哪种 DBMS 产品? “SQL”只是所有关系数据库都使用的一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tag。 Why should I tag my DBMS
-
如果您的数据库支持它,这似乎是一个 UNPIVOT 操作。
-
我不认为这样的查询很难看。它很长,但谁在乎呢?
UNION ALL在这里是合适的,并导致一个可读的查询,尽管查询很长。为什么不使用它?
标签: sql presto amazon-athena unpivot