【发布时间】:2018-08-23 08:41:01
【问题描述】:
好的,我会尝试第二次,因为第一次没有那么聪明
我的查询:
SELECT distinct kg.datum,
sum(case when leis.code = 'Oph3001' then leis.anzahl END) as leis3001,
sum(case when leis.code = 'Oph3003' then leis.anzahl END) as leis3003,
(select nvl((select to_date(KG2.KURZTEXT, 'dd.mm.yyyy')from kg_eintraege kg2 where kg2.kgtitel_nr = 1003350007 and kg.fall_nr = kg2.fall_nr and kg.patient_nr = kg2.patient_nr and kg.kg_id = kg2.kontext),'') from dual) as real_datum
FROM kg_eintraege kg
INNER JOIN aufenthalte a
ON kg.patient_nr = a.patient_nr
and kg.fall_nr = a.fall_nr
INNER JOIN MF_LEIS_DIAG_OP_MD leis
on leis.aufenthalte_nr = a.nr
group by kg.datum, kg.kg_id
order by /*real_datum*/ kg.datum desc
以下子查询导致问题:
(select nvl((select to_date(KG2.KURZTEXT, 'dd.mm.yyyy')from kg_eintraege kg2 where kg2.kgtitel_nr = 1003350007 and kg.fall_nr = kg2.fall_nr and kg.patient_nr = kg2.patient_nr and kg.kg_id = kg2.kontext),'') from dual)
将其放入 group by 表达式会引发 ORA-22818 错误(“此处不允许子查询”)。
不放会引发 ORA-00979 错误(“不是按表达式分组”)。
有人可以帮助我吗?
【问题讨论】:
-
您是否尝试过使用外连接到
kg_eintraege的第二个实例而不是子查询? (同样,不相关,但nvl(<somthing>,'')毫无意义——在 Oracle 中 null 和空字符串是相同的,所以结果仍然是 null。) -
@Alex Poole 谢谢你的回答。几个月前我尝试了外部连接,但不知何故我把它搞砸了。我会再试一次。我不知道,为什么我把nvl放在那里,我也会看看。编辑:对不起,我认为这是一个内部连接,我试过了。
标签: sql oracle group-by subquery