我会解决此查询
显示所有" LASER"的ID,日期和时间。仅涉及的干预措施 医生不到30年。
但我有一个错误:
选择i.id,i.data_e_ora
来自persona p join medico m
on p.cf = m.cf
加入effettua e
on m.cf = e.cf_med
加入intervento i
on e.id_int = i.id
其中i.tipo =' LASER'和p.data_nascita =((sysdate-p.data_nascita)/ 365)< 30
ERROR at line 9:
ORA-00932: inconsistent datatypes: expected DATE got NUMBER
表:
CF NOT NULL CHAR(16)
NOME VARCHAR2(30)
COGNOME VARCHAR2(30)
DATA_NASCITA DATE
SESSO CHAR(1)
答案 0 :(得分:0)
您只需修复where
子句即可。这是过于雄心勃勃的:
select i.id, i.data_e_ora
from persona p join
medico m
on p.cf = m.cf join
effettua e
on m.cf = e.cf_med join
intervento i
on e.id_int = i.id
where i.tipo = 'LASER' and
p.data_nascita > (sysdate - 365.25 * 30);
注意:减去年数的更好方法是实际减去年数:
where p.data_nascita > sysdate - interval '30' year