Это даст вам необходимые данные;
(SELECT
MinV,
DtTime
FROM
(SELECT
CONVERT(VARCHAR(10),a1.DtTime,102) AS [Date],
MIN(a1.Value1) AS 'MinV'
FROM dbo.ValueEntries a1
GROUP BY CONVERT(VARCHAR(10),a1.DtTime,102)
) b1
INNER JOIN
(SELECT DISTINCT
a2.DtTime, a2.Value1
FROM dbo.ValueEntries a2) b2 ON b1.MinV = b2.Value1 AND b1.Date = CONVERT(VARCHAR(10),b2.DtTime,102)
)
(SELECT
MaxV,
DtTime
FROM
(SELECT
CONVERT(VARCHAR(10),a1.DtTime,102) AS [Date],
MAX(a1.Value1) AS 'MaxV'
FROM dbo.ValueEntries a1
GROUP BY CONVERT(VARCHAR(10),a1.DtTime,102)
) b1
INNER JOIN
(SELECT DISTINCT
a2.DtTime, a2.Value1
FROM dbo.ValueEntries a2) b2 ON b1.MaxV = b2.Value1 AND b1.Date = CONVERT(VARCHAR(10),b2.DtTime,102)
)
Выводит следующее;
MinV DtTime
0.00 2020-01-09 22:29:17.000
0.00 2020-01-09 22:35:40.000
0.10 2020-01-10 00:33:07.000
0.69 2020-01-15 08:34:34.000
MaxV DtTime
2.49 2020-01-09 22:34:59.000
2.69 2020-01-10 00:34:34.000
6.67 2020-01-15 11:37:06.000
Теперь, в зависимости от того, что вы действительно хотите делать с данными, вы можете экспортировать это или добавьте его в панель отчетности.
Однако, если вы рассматривали возможность динамического использования этого на панели инструментов или в каком-либо приложении, я бы порекомендовал вам построить данные в кубы, как указано выше, а не пытаться выводить их все сразу.
Если вы ищете регулярный отчет о дате по группам, рассмотрите дополнительный столбец, чтобы сделать вашу жизнь намного более понятной.
DtTime datetime
DtSpec date
Value1 decimal(18,2)
Это также, несомненно, значительно облегчит выполнение ваш сервер.
Кроме того, не забывайте использовать первичные ключи в ваших таблицах, так как это упрощает явные объединения для манипулирования вашими данными, поэтому ваша новая схема должна выглядеть примерно так;
ID INT(PK)
DtTime datetime
DtSpec date
Value1 decimal(18,2)
Надеюсь, это поможет вам лучше понять, как двигаться вперед. Удачи!