Witam.
Mam mam 2 bardzo pilne w rozwiązaniu problemy z Oracle SQL. Czy może mi ktoś pomóc je rozwiązać
A oto dwa zapytania:
1.Problem stanowi błąd: ORA-01791: not a SELECTed expression, który nie występuje po wyłączeniu linijki count(p.barcode_id) oraz pominięciu GROUP BY oraz ORDER BY, które oczywiście są mi niezbędne :(
select distinct
c.cgn_country, (case when p.spr_id = 'RETUR' then p.snd_id else p.cgn_id end), to_char(c.created_date,'YYYY-MM-DD'), c.cgn_address, c.cgn_zip, c.cgn_name, p.barcode_id,
to_char(c.time_arr,'YYYY-MM-DD'), p.grs_wgt, count(p.barcode_id), p.vot, c.hu_qty
from vs_cusord c
join vs_cusord_pcs p on p.CO_FK=c.PK
where c.ord_id like 'COPL%' and c.xaccount_id like 'CUSTOMER%' and to_char(p.created_date,'YYYY-MM-DD') = (case to_char(sysdate,'day') when 'monday ' then to_char(sysdate-3,'YYYY-MM-DD') when 'tuesday ' then to_char(sysdate-1,'YYYY-MM-DD') when 'wednesday' then to_char(sysdate-1,'YYYY-MM-DD') when 'thursday ' then to_char(sysdate-1,'YYYY-MM-DD') when 'friday ' then to_char(sysdate-1,'YYYY-MM-DD') end )
group by
c.cgn_country, case when p.spr_id = 'RETUR' then p.snd_id else p.cgn_id end, to_char(c.created_date,'YYYY-MM-DD'), c.cgn_address, c.cgn_zip, c.cgn_name, p.barcode_id, to_char(c.time_arr,'YYYY-MM-DD'), p.grs_wgt, p.vol, c.hu_qty
order by c.ord_id
- Drugim problemem jest pobranie daty za dzień poprzedni z konkretną godziną (18:00) i wyświetlenie tego w formacie 24-godzinnym (jeden z elementów BETWEEN'a. A oto kod:
select
pcs.barcode_ext_id, max(tr.event_date), LISTAGG(tr.reason_id, ', ') WITHIN GROUP (order by tr.pk), tr.platform_id, (to_date(to_char(to_char((sysdate-1),'yyyy-mm-dd')||' 18:00:00'),'yyyy-mm-dd hh24:mi:ss') ), (to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'))
from vs_cusord_pcs pcs
left join vs_trace tr on pcs.pk=tr.pcs_fk
where tr.ord_id like 'COPL%'
and pcs.xaccount_id = 'CUSTOMER'
and to_char(pcs.created_date,'YYYY-MM-DD HH24:MI:SS') between to_date(to_char(sysdate-1,'YYYY-MM-DD') || ' 18:00:00','YYYY-MM-DD HH24:MI:SS') and to_date(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS')
and pcs.DEL_TRC_DATETIME is null
and (tr.reason_id in ('UMP','LMP') or tr.reason_id in ('LPL','ULP','UMP','LMP') or tr.reason_id in ('LPL','ULP'))
group by
pcs.barcode_ext_id, tr.reason_id, tr.platform_id
Tutaj problem występuje typu: ORA-01861: literal does not match format string
Z góry dziękuję za pomoc w szybkim rozwiązaniu problemów