用于对列进行分组并忽略空值的SQL查询

Stu*_*Stu 3 sql oracle10g

我有一张桌子:

Col1 Col2 Col3 Col4
1          a
1     b          
1                c
2     e   
2          f  
2                g
Run Code Online (Sandbox Code Playgroud)

我需要编写一个具有这样输出的查询

Col1 Col2 Col3 Col4
1     a     b   c
2     e     f   g
Run Code Online (Sandbox Code Playgroud)

我正在使用oracle 10g

Tar*_*ryn 10

如果每列只有一个值,那么您可以使用聚合函数:

select 
  col1,
  max(col2) col2,
  max(col3) col3,
  max(col4) col4
from yourtable
group by col1
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo

结果是:

| COL1 | COL2 | COL3 | COL4 |
-----------------------------
|    1 |    b |    a |    c |
|    2 |    e |    f |    g |
Run Code Online (Sandbox Code Playgroud)