2014-10-09 2 views
0

Прошу прощения, если я не задаю это правильно. Мне нужно написать запрос, который идет против журнала. в журнале есть примечание к столбцу, которое отслеживает успех каждого шага в процедуре. что мне нужно, если в заказе на работу «fjobno» есть WCutSuccess ... в поле примечания в диапазоне дат и тот же порядок работы «fjobno» имеет ASSYSuccess ... в другом диапазоне дат я хочу его перечислить. Я просто не могу понять это. Я уверен, что это просто. и я уверен, что люди делают это все время. Если кто-то может указать мне в правильном направлении, я был бы признателен.Использование того же столбца с двумя разными параметрами SQL-сервер

select 
    inm.fgroup, inm.fpartno, jod.fjobno, sqb.note 
from 
    inmast as inm 
left join 
    jodbom as jod on inm.fpartno = jod.fbompart 
left join 
    sqbclog as sqb on jod.fjobno = sqb.job 
where 
    (inm.fgroup = 'isl' or inm.fgroup = 'iss') 
    and 
    (sqb.note = 'WCutSuccess...' 
    and sqb.stamp between '09/01/2014' and '10/01/2014') 
    and 
    (sqb.note = 'ASSYSuccess...' 
    and sqb.stamp between '10/01/2014' and '10/09/2014') 
+0

Некоторые образцы данных сделают это намного проще, я думаю. Для любого заданного порядка работы эти значения будут в отдельных строках? – Andrew

ответ

1

Я изменил запрос немного, чтобы он использует IN вместо col = something or col = somethingelse.

Я также изменил способ выбора диапазонов в датах.

SELECT inm.fgroup, 
     inm.fpartno, 
     jod.fjobno, 
     sqb.note 
FROM inmast AS inm 
LEFT JOIN jodbom AS jod 
    ON inm.fpartno = jod.fbompart 
LEFT JOIN sqbclog AS sqb 
    ON jod.fjobno = sqb.job 
WHERE inm.fgroup IN ('isl','iss') 
AND (
    ( sqb.note = 'WCutSuccess...' 
     AND sqb.stamp >= '20140109' 
     AND sqb.stamp < '20140111') 
    OR(sqb.note = 'ASSYSuccess...' 
     AND sqb.stamp >= '20140110' 
     AND sqb.stamp < '20140911') 
    ) 
+0

Спасибо, что я ищу, где он говорит, что WCutSuccess AssySuccess для того же задания – Turtleman10

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