У меня есть требование, где я должен написать запрос, чтобы получить что-то с фильтром даты ежемесячно, как это.
- у нас может быть несколько счетов на заказ (каждый счет с новой опубликованной датой)
- Мне нужно получить записи таких счетов, которые публикуются в самом первом месяце, и для запроса следующего месяца с новым фильтром дат такие записи не должны быть частью набора результатов.
Например
Теперь еще один счет на тот же заказ, опубликованный в феврале 2019 года.
Теперь, когда я запускаю этот запрос для января, должна появиться только запись с датой публикации за январь, а когда я выполняю этот запрос за февраль, этот порядок не должен быть частью набора результатов. как мы уже решили, что это будет частью результатов предыдущего месяца (января).
Я использую следующий запрос, чтобы получить результат, но он дает правильный результат за январь, но снова показывает тот же результат и за февраль. Пожалуйста, помогите в этом отношении.
DECLARE @From DATETIME
DECLARE @To DATETIME
SET @From = '2018-01-01 00:00:00.000'
SET @To = '2018-01-30 23:59:59.997'
SELECT *
FROM (
SELECT s.OrderNumber
,i.InvoiceNumber
,i.new_PostedDate
,i.new_CanceledDate
,s.new_OrderStatus
,i.StatusCode
,s.ModifiedOn
,ROW_NUMBER() OVER (
PARTITION BY s.OrderNumber ORDER BY i.new_PostedDate ASC
) AS RowNumber
FROM SalesOrders s
INNER JOIN Invoices i ON s.SalesOrderId = i.SalesOrderId
LEFT JOIN StatusReasonsLookup sl ON i.StatusCode = sl.Id
AND (i.new_PostedDate >= @From)
AND (i.new_PostedDate <= @To)
--Where sl.StatusCodeName <> 'Canceled'
) tblInvoice
WHERE RowNumber = 1