У меня проблемы со следующим запросом.У меня есть две таблицы;Стол Orderheader и стол куплены.Первый запрос, который я выполняю, дает мне, например, две даты.Основываясь на этих двух датах, мне нужно найти производственные данные И, на основе производственных данных, мне нужно найти данные о покупке и объединить эти данные вместе.Допустим, я делаю следующее:
Select Lotdate From Orderheader where orhsysid = 1
Это приводит к двум строкам: «2019-02-05» и «2019-02-04».Теперь мне нужно сделать две вещи: мне нужно два запустить два запроса, используя этот набор результатов.Первый легко;используйте возвращенные даты и получите сумму в столбце A, например:
Select date, SUM(Amount) from Orderheader where date = Sales.date() [use the two dates here]
Второй вариант немного сложнее, мне нужно найти последний день, когда что-то было куплено, основываясь на двух датах.Производство каждый день, поэтому Productiondate = Sales.date () - 1.Но купленный происходит от производственного дня и не каждый день, поэтому для каждого производственного дня нужно найти последний купленный день.Так что я не могу сказать, где date = Orderheader.date.Мне нужно сделать что-то вроде:
Select date, SUM(Amount)
FROM Bought
WHERE date = (
SELECT top 1 date
FROM Bought
WHERE date < Orderheader.date)
Но дважды, для обеих дат, которые я получил.Это должно привести к 1 таблице, дающей мне:
Bought.date, Bought.SUM(AMOUNT), Orderheader.date, Orderheader.SUM(AMOUNT)
Все на основе, возможно, кратного, числа (ов), которые я получил из первого запроса из таблицы продаж.
У меня естья боролся с этим какое-то время, используя соединения и вложенные запросы, но я не могу понять это!
Пример примера:
SELECT CONVERT(date,ORF.orfDate) as Productiedatum, SUM(orlQuantityRegistered) as 'Aantal'
FROM OrderHeader ORH
LEFT JOIN OrderFrame ORF ON ORH.orhFrameSysID = ORF.orfSysID
LEFT JOIN OrderLine ORL ON ORL.orhSysID = ORH.orhSysID
LEFT JOIN Item ON Item.itmSysID = ORL.orlitmSysID
where CONVERT(date,ORF.orfDate) IN
(
SELECT DISTINCT(CONVERT(date, Lot.lotproductiondate)) as Productiedatum
FROM OrderHeader ORH
LEFT JOIN Registration reg ON reg.regorhSysID = ORH.orhSysID
LEFT JOIN StockRegistration stcreg ON stcreg.stcregRegistrationSysID = reg.regSysID
LEFT JOIN Lot ON Lot.lotSysID = stcregSrclotSysID
WHERE ORH.orhSysID = 514955
AND regRevokeRegSysID IS NULL
AND stcregSrcitmSysID = 5103
)
AND ORL.orlitmSysID = 5103
AND orldirSysID = 2
AND NOT orlQuantityRegistered IS NULL
GROUP BY Orf.orfDate
Пример вывода:
Productiedatum Aantal
2019-02-05 20
2019-02-06 20
Здесь я использовал вложенный подзапрос, чтобы получить результаты из 'Production' (orderheader), потому что я простоможно использовать дату = дата.Я борюсь с частью продаж, где мне нужно найти последние даты и использовать эти даты в таблице продаж, чтобы получить сумму этой даты.
Ожидаемый результат:
Productiedatum Aantal Boughtdate Aantal
2019-02-04 20 2019-02-01 55
2019-02-05 20 2019-02-04 60