Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 查询相关问题_Oracle - Fatal编程技术网

Oracle 查询相关问题

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_

我无法上传图像,但在我的查询中,犯罪id重复出现,因为有两种证据类型,是否可能使其显示为犯罪1。。。。。。。包含。。。。。其中物理的有1个,DNA的有3个

目前的结果是:

犯罪1发生于2013年11月12日,包含证据类型:物理证据 其中有1个

犯罪1发生于2013年11月12日,包含证据类型:DNA 有三个

代码如下:

  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来构造人工语句不是一个好主意,您如何处理查询?