在SELECT子句中,连接所需的所有值(包括逗号等),并在AS后面写所有列标题(根据需要)。
测试表:
create table individual ( id,status,language )
as
select 1000,'1','en' from dual union all
select 1001,'en' from dual union all
select 1002,'de' from dual union all
select 2000,'2','es' from dual union all
select 2001,'fr' from dual ;
create table msisdn ( individualid,msisdn,country )
as
select 1000,9321767493,'IN' from dual union all
select 1001,4421767493,'GB' from dual union all
select 1002,4921767493,'DE' from dual ;
查询
select
m.msisdn || ',' || 'MSISDN' || ',' || i.language || '_' || m.country
as "identifier,type,locale"
from
individual i,msisdn m
where
i.id = m.individualid
and i.status = '1'
and rownum < 11;
-- result
identifier,locale
-----------------------------------------------------
9321767493,MSISDN,en_IN
4421767493,en_GB
4921767493,de_DE
在命令行(例如Oracle 18c,sqlcl)上,您可以执行以下操作:
SQL> set sqlformat csv
SQL> select
2 m.msisdn || ',' || i.language || '_' || m.country
3 as "identifier,locale"
4 from
5 individual i,6 msisdn m
7 where
8 i.id = m.individualid
9 and i.status = '1'
10 and rownum < 11;
-- output
"identifier,locale"
"9321767493,en_IN"
"4421767493,en_GB"
"4921767493,de_DE"
此外,在编写内部联接时,您可以/应该使用JOIN ... ON ...
select
m.msisdn || 'MSISDN' || i.language || '_' || m.country
as "identifier,locale"
from
individual i join msisdn m on i.id = m.individualid
where
i.status = '1'
and rownum < 11;
DBfiddle here.
本文链接:https://www.f2er.com/3153549.html