在处理应该相似但彼此之间存在一个或多个缺失值的行时,我遇到了一个非常有趣的问题。我想要做的是执行一个查询,该查询将所有相似的行折叠(分组)为一个包含所有(或尽可能多)列的值的条目,以便删除缺失的值。
我将把这个问题分成以下两个子问题:
问题A)
鉴于表格:
|--------------------------|
| col1 | col2 | col3 |
|--------------------------|
| a | | c |
| a | b | |
| | | c |
| a | b | |
| | b | c |
| a | | c |
|--------------------------|
创建一个返回的查询 - > (a,b,c)
问题B)
鉴于表格:
|--------------------------|
| col1 | col2 | col3 |
|--------------------------|
| a | | c |
| a | b | |
| | | c |
| a | b | |
| | b | c |
| a | | c |
| d | | f |
| d | | |
| | e | f |
| d | e | |
| d | | f |
|--------------------------|
创建一个返回的查询 - > (a,b,c),(d,e,f)
关于如何实现这一目标的任何想法或提示?
答案 0 :(得分:0)
您可以尝试对col1
列进行分组,然后选择其他两列的MAX()
。如果仔细查看第一个表格,您会看到col2
和col3
分别拥有b
和c
的唯一值。同样的推理也适用于您的第二个表,但是col1
有两个不同的值。
SELECT
col1, MAX(col2) AS col2, MAX(col3) AS col3
FROM yourTable
WHERE col1 IS NOT NULL
GROUP BY col1
在这里演示:
答案 1 :(得分:0)