Я работаю над отчетом, и мне нужно выяснить, как часто пользователь вставляет строку в базу данных на основе интервала (@ startDate, @ finalDate), который я выбираю из пользовательского интерфейса.
Например: у меня есть интервал: 25/05/2019 - 06/13/2019
Alter PROCEDURE [dbo].[BT_Test_Procedure_With_Period]
@beginDate DateTime,
@endDate DateTime
AS BEGIN
SET NOCOUNT ON;
SELECT name, COUNT(*) as 'nrOfRows',
CASE
WHEN COUNT(*) >= DATEDIFF(WEEK, @beginDate, @endDate) THEN 'x'
ELSE ''
END AS 'Weekly',
CASE WHEN COUNT(*) >=DATEDIFF(WEEK, @beginDate, @endDate)/4 AND COUNT(*)
<DATEDIFF(WEEK, @beginDate, @endDate) THEN 'x'
ELSE ''
END AS 'Montly',
CASE WHEN COUNT(*) >1 AND COUNT(*) <DATEDIFF(WEEK, @beginDate,
@endDate)/4 THEN 'x'
ELSE ''
END AS 'Rare',
CASE WHEN COUNT(*) = 1 THEN 'x'
ELSE ''
END AS 'One time' FROM InsertedRecords
WHERE @InsertedDateRow BETWEEN @beginDate AND @endDate
GROUP BY name
ORDER BY nrOfRows DESC
Если пользователь вставил хотя бы одну строку в каждую неделю в этом интервале,частота будет: еженедельно.Или, если он вставит хотя бы одну строку в каждый месяц в этом интервале, но не в каждую неделю, частота будет: ежемесячно
Мой вопрос здесь такой: как мне проверять каждую неделю и месяц с текущего интервала допосмотреть, есть ли там @rowInsertedDate?
В данном конкретном случае с 25/05/2019 по 13 июня 2009 года есть 3 допустимые недели, в которые пользователь может вставить строку: 27 мая - 02 июня 03Июнь - 09 июня 10 июня - 13 июня
Если пользователь вставляет строку в каждый из этих 3: еженедельно, иначе ежемесячно.
Надеюсь, я достаточно ясно, спасибо!