2016-06-17 2 views
0

У меня есть две таблицы (одна с данными о «salesimports» и рядом с данными о магазинах).oraclesql - Поиск отсутствующих данных по продажам

Это пример данных:

shop city importid importtype importtime committime endtime 
S410 KURSK 1107597374 PSCN 2016-06-17 2016-06-17 2016-06-17 
S004 KIEV 1107595750 PSCN 2016-06-17 2016-06-17 2016-06-17 
S230 WARSAW 1107595594 PSCN 2016-06-17 2016-06-17 2016-06-17 
S115 LVIV 1107595507 PSCN 2016-06-17 2016-06-17 2016-06-17 
S220 PRAGUE 1107595458 PSCN 2016-06-17 2016-06-17 2016-06-17 
S179 MINSK 1107595328 PSCN 2016-06-17 2016-06-17 2016-06-17 
S247 HOMEL 1107595264 PSCN 2016-06-17 2016-06-17 2016-06-17 
S202 ROSTOV 1107595114 PSCN 2016-06-17 2016-06-17 2016-06-17 
S132 BERLIN 1107595112 PSCN 2016-06-17 2016-06-17 2016-06-17 

Выбор: Я использую, чтобы принимать данные из обеих таблиц:

select f.shid shop, f.ctid city, i.limportref importid, i.simporttype importtype, 
     centrala_user.borlanddatetostr(i.itp) importtime, 
     centrala_user.borlanddatetostr(i.gtp) committtime, 
     centrala_user.borlanddatetostr(i.edp) endtime 
from oracla.imports i 
join oracla.firm f on i.shid = f.shid 
where f.byact = 0 
and f.bytype = 0 
and i.simporttype not in ('PSXN') 
order by i.itp desc; 

Мой план, чтобы получить выбор, который дает мне информацию о магазинах которые не имели импорта в последние дни, или целые «salesdata» из магазина отсутствуют в таблице salesimports.

Я пробовал несколько решений с «а не в» и «и не существует», но это не дало мне результата, который я хотел.

Любые идеи?

ответ

1

Вы не показали, что вы пробовали. Вы пытаетесь что-то вроде этого сделал:

select f.*, 
     (select max(centrala_user.borlanddatetostr(i.itp)) from oracla.imports i where i.simporttype not in ('PSXN') and i.shid=f.shid) as last_import_date 
    from oracla.firm f 
where f.byact = 0 
    and f.bytype = 0 
    and f.shid not in (
     select distinct i.shid 
     from oracla.imports i 
     where i.simporttype not in ('PSXN') 
     and centrala_user.borlanddatetostr(i.itp) > trunc(add_months(sysdate,-1)) 
    ) 

Потому что не ясно, что означает последние дни, я использовал одну неделю (TRUNC (SYSDATE -7))

+0

Спасибо, это то, что я почти хотел. Грустно сказать, но я использовал аналогичный путь, однако я искал f.shid не в фирменном f вместо импорта ... Не спрашивайте меня, почему. Вероятно, препетит сильно устал и вышел из кофе. Последнее, что мне нужно будет выяснить, как показать последний importdate – headder

+0

Хорошо, это дает мне список магазинов, у которых не было ни одного импорта. Но теперь мне нужно разобраться, как просматривать магазины, которые также пропускают импорт в течение последнего месяца, и показывать дату последнего импорта на главный сервер. – headder

+0

@headder Если в течение последнего месяца есть месяц назад, вы можете использовать add_months (sysdate, -1). Для последней даты используйте встроенный выбор. Я изменил SQL. – Mottor

Смежные вопросы