这里我有oracle db表,如下所示:
name a1 b1 c1
---- --- --- ---
a z null null
a null y null
a nul null z
b y z null
b null null m
所以我的预期输出表是:
name a1 b1 c1
---- --- --- ---
a z y z
b y z m
答案 0 :(得分:3)
由于汇总函数[除了count(*)
]忽略NULL
,您只需使用MAX
或MIN
和group by
即可得到你想要的结果如下。
SELECT name,
max(a1) AS a1,
max(b1) AS b1,
max(c1) AS c1
FROM table1
GROUP BY name
OR
SELECT name,
min(a1) AS a1,
min(b1) AS b1,
min(c1) AS c1
FROM table1
GROUP BY name
<强>结果:强>
NAME A1 B1 C1
------------------
a z y z
b y z m
<强> DEMO 强>
答案 1 :(得分:2)
你可以尝试这样的事情:
select name, max(nvl(a1, '')), max(nvl(a2, '')), max(nvl(a3, ''))
from table
group by name
答案 2 :(得分:1)
SELECT name, MAX( a1 ) , MAX( b1 ) , MAX( c1 )
FROM Table
GROUP BY name
对于SQL,这将起作用