假设我有以下数据库表
Name | Nickname | ID
----------------------
Joe Joey 14
Joe null 14
Run Code Online (Sandbox Code Playgroud)
现在我想做一个select语句,将这两列合并为一,同时替换空值.结果应如下所示:
Joe, Joey, 14
Run Code Online (Sandbox Code Playgroud)
哪个sql语句管理它(如果它甚至可能)?
APC*_*APC 19
最简单的解决方案
SQL> select * from t69
2 /
NAME NICKNAME ID
---------- ---------- ----------
Joe Joey 14
Joe 14
Michael 15
Mick 15
Mickey 15
SQL> select max(name) as name
2 , max(nickname) as nickname
3 , id
4 from t69
5 group by id
6 /
NAME NICKNAME ID
---------- ---------- ----------
Joe Joey 14
Michael Mickey 15
SQL>
Run Code Online (Sandbox Code Playgroud)
如果你有11gR2你可以使用新的LISTAGG()函数,但是它很简单,可以将上面的语句包装在一个连接NAME和NICKNAME列的SELECT中.
AFAIK,问题不清楚。所以我在这里做出一些假设。您的输出的两行的第一列和第三列相同。只有第二个字段不同。
所以你可以简单地写一个选择任务
select one.name,two.nick_name,one.id from
(select name,id from your_tb group by name,id) one,
your_tb two
where two.nickname is not NULL
and two.name=one.name
and two.id=one.id;
Run Code Online (Sandbox Code Playgroud)
也许我们可以调整这个,但我不擅长调整 sql 查询,但这是我认为你需要的方式。
| 归档时间: |
|
| 查看次数: |
14813 次 |
| 最近记录: |