关于Oracle,在一行中个别字段多行显示。

2024-12-16 14:24:25
推荐回答(4个)
回答1:

select id, max(substr(sys_connect_by_path(name, ','),2)) str
from (SELECT id, name,
dense_rank() OVER(PARTITION BY id ORDER BY id,name) RN
FROM people ) t
start with rn = 1
connect by rn = prior rn + 1 and id = prior id
group by id
把原来我写的回答里的row_number()换成dense_rank()就行了,开窗函数,也就是over(),中的order by id,name,原来只按id排的序

回答2:

select * from test;

select t.id, max(t.a)

  from (select id, wm_concat(name) over(partition by id) a

          from (select distinct id, name from test)) t

 group by t.id;

表结构和你提提供的一模一样,我用的是oracle 10g  我不知道9i  可以不

回答3:

ID不可以重复的哦! 你要查name值为c,d,e你可以要 in(id)查询 里面写你要查询的ID

回答4:

导入的时候,对于字符串有没有指定“”这样的包括符?时间类型的导入的时候有没有指定时间字段的格式?
很有可能是你导入的DATETIME字段没有指定格式,toad就按默认格式导入,结果有不匹配的。
导入的时候,看一下那些选项,重新调整一下应该就可以了
包括字段分隔符