如何将共享 id 的多行合并为一行(HQL)?

How to merge multiple rows sharing id into one single row (HQL)?

在长时间 JSON 解码结束时,我得到了这个 Hive table:

+----+--------+---------+--------+
| ID | field1 | field2  | field3 |
+----+--------+---------+--------+
|  1 | T      | NULL    | NULL   |
|  1 | NULL   | 0103210 | NULL   |
|  1 | NULL   | NULL    | NULL   |
|  1 | NULL   | NULL    | NULL   |
|  1 | NULL   | NULL    | NULL   |
|  1 | NULL   | NULL    | NULL   |
|  1 | NULL   | NULL    | NULL   |
|  1 | NULL   | NULL    | NULL   |
|  1 | NULL   | NULL    | NULL   |
|  2 | T      | NULL    | NULL   |
|  2 | NULL   | NULL    | NULL   |
|  2 | NULL   | NULL    | NULL   |
|  2 | NULL   | NULL    | NULL   |
|  2 | NULL   | NULL    | NULL   |
|  2 | NULL   | NULL    | NULL   |
|  3 | NULL   | NULL    | NULL   |
|  4 | U      | NULL    | NULL   |
|  4 | NULL   | 0103212 | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
|  4 | NULL   | NULL    | NULL   |
+----+--------+---------+--------+

这是期望的输出:

+----+--------+---------+--------+
| ID | field1 | field2  | field3 |
+----+--------+---------+--------+
|  1 | T      | 0103210 | NULL   |
|  2 | T      | NULL    | NULL   |
|  3 | NULL   | NULL    | NULL   |
|  4 | U      | 0103212 | NULL   |
+----+--------+---------+--------+

因此,我想将具有相同 ID 且在同一 table 内的多行合并到一行中。什么查询可以让我得到我正在寻找的结果?

使用 min()max() 聚合:

select ID, 
       max(field1) as field1,
       max(field2) as field2, 
       max(field3) as field3
  from your_table
 group by ID