SQL: как сравнить 2 значения и, если они совпадают, вернуть то, что старше 3 месяцев - PullRequest
0 голосов
/ 03 марта 2020

Мне нужно составить отчет, в котором сравниваются номера SKU, запланированные на линиях розлива на этой неделе, с тем, сколько времени прошло с тех пор, как на линии работал тот же SKU, и, таким образом, только те SKU, которые не были запущены ( или никогда не было) в течение более 3 месяцев, отображает.

edit: я думаю, что мне нужно написать запрос, который находит самую последнюю дату каждого номера SKU, а затем сравнить его с используемым номером SKU на этой неделе, а затем покажите те, которые старше 3 месяцев. но я понятия не имею, как сделать это с сохранением кода под нетронутым?

Я не имею понятия, как начать, я искал и много пробовал, но не удалось

заранее спасибо

код, который будет помечен на этой неделе:

`

SELECT 
od.odscheduleid
,lc.shortname as line
,ar.erpcode as SKU
,ar.shortname as Article
,od.[PlannedStartInflow]
,od.[PlannedEndInflow]
,st.shortname as 'status'
,od.[ShortName] as 'order'
,od.[ERPCode]
,od.[ASCode]
,od.[PlannedQuantity] as 'PlannedQuantity [PC]'
,cast(od.[PlannedQuantity]*ar.Volume/100 as decimal(12,2)) as 'PlannedQuantity [HL]'
,od.[PlannedChangeoverTime]
,od.[PlannedSpeed]
,od.[PlannedSpeedRatio]
  FROM [RM].[TblDatODSchedule] od
  inner join [EM].[TblLstLocation] lc on od.locationid=lc.locationid
  inner join [RM].[TblLstART] ar on od.artid=ar.artid
  inner join [EM].[TblLstStatus] st on od.statusid=st.statusid
 WHERE lc.locationid in (@Line) --lc.packagingtype is not null
 and plannedendinflow > @StartDate`

1 Ответ

0 голосов
/ 03 марта 2020

Хорошо, давайте предположим, что у вас есть такая таблица:

CREATE TABLE SKU (name varchar(50), last_run datetime);

Мы можем заставить ваш запрос работать так:

SELECT *
FROM SKU
WHERE last_run IS NULL
OR datediff(month, last_run, getdate()) > 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...