У меня есть следующая SQL таблица серверов:
| InDate | ID | Value | Value2 | Value3 |
+-------------------------+--------+--------+--------+-----------+
| 2014-09-30 13:55:28.000 | 66 | 50 | 1 | 0 |
| 2014-09-30 10:05:36.000 | 66 | 60 | 2 | 0 |
| 2014-10-01 08:31:21.000 | 66 | 20 | 3 | 0 |
| 2014-10-01 06:20:41.000 | 66 | 30 | 4 | 0 |
Я пытаюсь создать запрос, который принимает Value
и SUM
для Value2
и Value3
для каждого максимального InDate
Итак, я хочу получить
2014-09-30 13:55:28.000 | 66 | 50 | 1
2014-10-01 08:31:21.000 | 66 | 20 | 3
У меня следующий запрос
SELECT
MAX(InDate),
MAX(Value),
SUM (Value2 + Value3) AS valueSum
FROM
mytable
WHERE
ID = 66
AND CAST(InDate AS DATE) BETWEEN '2014-09-30' AND '2014-10-01'
GROUP BY
CAST(InDate AS DATE)
Но это возвращает смешанные результаты, максимум Date
, максимальное Value
независимо от Date
и удваивает (?) SUM
. Итак, я получаю
2014-09-30 13:55:28.000 | 66 | 60 | 4
2014-10-01 08:31:21.000 | 66 | 30 | 8
Это неправильно.
Как я могу получить желаемый результат?
Спасибо