Oracle 查询相关问题
我无法上传图像,但在我的查询中,犯罪id重复出现,因为有两种证据类型,是否可能使其显示为犯罪1。。。。。。。包含。。。。。其中物理的有1个,DNA的有3个 目前的结果是: 犯罪1发生于2013年11月12日,包含证据类型:物理证据 其中有1个 犯罪1发生于2013年11月12日,包含证据类型:DNA 有三个 代码如下:Oracle 查询相关问题,oracle,Oracle,我无法上传图像,但在我的查询中,犯罪id重复出现,因为有两种证据类型,是否可能使其显示为犯罪1。。。。。。。包含。。。。。其中物理的有1个,DNA的有3个 目前的结果是: 犯罪1发生于2013年11月12日,包含证据类型:物理证据 其中有1个 犯罪1发生于2013年11月12日,包含证据类型:DNA 有三个 代码如下: select 'Crime' || ' ' || crime.crime_id || ' ' || 'occured on' || ' ' || crime.crime_
select 'Crime' || ' ' || crime.crime_id || ' ' || 'occured on' || ' ' ||
crime.crime_date|| ' ' || ' and contains evidence type:' || ' ' ||
evidence.evidence_type || ' ' || 'of which there are' || ' '||
evidence.quantity || '.' "Crime Data"
from crime, evidence
where crime.crime_id=evidence.crime_id
order by crime.crime_id;
我们可以使用listag()非常接近这一点
select crime_str
|| evidence.evidence_agg_str
|| '.' "Crime Data"
from ( select crime.crime_id
, 'Crime' || ' ' || crime.crime_id || ' occured on ' ||
crime.crime_date|| ' and contains evidence type: ' as crime_str
from crime ) crime,
( select distinct crime_id
, listagg (evidence_str , ',') within group (order by evidence_type)
over (partition by crime_id) evidence_agg_str
from (
select crime_id
, evidence_type
, evidence_type || ' of which there are '||
quantity as evidence_str
from evidence )
) evidence
where crime.crime_id=evidence.crime_id
order by crime.crime_id;
从中可以看出,句子结构并不完美:
犯罪1发生于2013年11月12日,包含证据类型:DNA有3个,实物有1个
如果这对您真的很重要,您可以使用REGEXP\u COUNT来标识证据字符串中的最后一个逗号,并使用REGEXP\u REPLACE来替换
和
。这取决于你想变得多复杂 嗯,使用sql来构造人工语句不是一个好主意,您如何处理查询?