SQL Помощь относительно времени более 7 дней - PullRequest
0 голосов
/ 14 января 2020

Мне было интересно, может ли кто-нибудь помочь с моим запросом. Наконец-то я получил его для отображения всей необходимой мне информации, но есть ли способ заставить его выводить только данные для OPN 9661. Более 7 дней.

И OPN 9601 и 9640 для отображения данных более 2 дней. .

Заранее спасибо!

SELECT lma.lot, lma.device, dd.device_desc, lma.lpt,lma.opn,
CASE WHEN l.hold = 'Y' THEN 'Y'
     WHEN l.hold = 'F' THEN 'F' ELSE 'N' END AS hold,lma.arrival_dttm,
Round((SYSDATE - lma.arrival_dttm)*24,2) AS duration, lma.in_qty,
ls.lot_code3 AS location, la.operator
FROM lot_move_age  lma, lot_str ls, lot l, lot_cur_opn lco, device_def dd, lot_act la
WHERE lma.facility = 'DP1DM5' and ls.facility = 'DP1DM5'
and l.facility = 'DP1DM5' AND dd.facility = 'DP1DM5'
and lco.facility = 'DP1DM5' and la.facility = 'DP1DM5'
AND lma.grp_type = '704'
AND lma.latest = 'O'
AND ls.latest = 'Y'
AND lma.lot = ls.lot
AND lma.lot = l.lot
AND lma.lot = lco.lot
AND lma.lot = la.lot
AND lma.opn = lco.opn
AND lma.lpt = lco.lpt
AND la.tran_dttm IS NULL
AND lma.departure_dttm IS NULL
AND lma.lpt = l.lpt
AND lma.opn != '0000'
AND (lma.opn LIKE '9601' or lma.opn LIKE '9640' or lma.opn LIKE '9661')
AND lma.device = ls.device
AND lma.device = dd.device

ORDER BY arrival_dttm

Вот скриншот таблицы:

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Вы можете использовать дополнительное условие, используя оператор case в предложении WHERE, чтобы найти условную разницу в дате следующим образом:

And sysdate - lma.arrival_dttm >= 
    Case when lma.opn = 9661 
         Then 7
    Else 2 
    End

Обратите внимание, что разница между датами дает количество дней между этими двумя даты.

Ура !!

0 голосов
/ 14 января 2020

у вас есть столбец длительности в вашем запросе Round((SYSDATE - lma.arrival_dttm)*24,2) AS duration

, так что ... просто добавьте еще одну строку в секцию where:

and Round((SYSDATE - lma.arrival_dttm)*24,2) >= 7

или, если вам нужно указать c logi c для OPN 9661 и 9640, которые могут быть:

and (
(lma.opn = 9661 and Round((SYSDATE - lma.arrival_dttm)*24,2) >= 7)
or 
(lma.opn = 9640 and Round((SYSDATE - lma.arrival_dttm)*24,2) >= 2)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...