具有空值的多行 - 我想要一行不为空

时间:2016-12-20 13:30:47

标签: sql oracle select oracle11g

我的查询结果如下:

ID            desc             Year   pid
0006845503    tes1             null   null
0006845503    null             2017   null      
0006845503    null             null    90   
0006845503    null             null    null

我想展示这些结果:

ID              desc               year    pid
0006845503      TEST1              2017    90

2 个答案:

答案 0 :(得分:3)

如果列的值只出现一次(只有一个值可用),那么简单的group by应该执行任务:

SELECT t.id,t.year,t.code,MAX(t.desc) as desc,MAX(t.year) as year,MAX(t.pid) as pid
FROM YourTable t
GROUP BY t.id,t.year,t.code

答案 1 :(得分:1)

如果你知道每列只有一行会有一个值,你可以使用像minmax这样的聚合函数来跳过null并返回唯一的值在专栏中。 E.g:

SELECT   id, year, code, MAX("desc"), MAX("year"), MAX(pid)
FROM     mytable
GROUP BY id, year, code