В таблице-01, только один столбец (A/B/C/D) будет заполнен одновременно. поэтому в конце дня я хочу получить значения всех заполненных столбцов в одну строку. Если столбец A заполняется 2 раза за один день, то он должен получить сумму этих двух значений. тогда ожидаемый результат будет Таблица-02

.

В принципе, я хочу уменьшить количество строк в моей таблице. Как я могу объединить строки с одинаковой датой в одну строку? Время должно быть проигнорировано.

Таблица-01

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Дата A B C D
2020-10-14 00:00:00.000 2000NULLNULL NULLNULL
2020-10-14 11:32:19.350 NULL1000 NULLNULL NULLNULL
2020-10-14 20:56:33.217 NULL1000NULLNULL
2020-10-19 15:04:10.760 NULL1000 NULLNULL NULLNULL
2020-10-19 16:21:28.553 NULL NULLNULL NULL2000 NULLNULL
2020-11-02 15:57:41.277 1000 NULL NULLNULLNULL
2020-11-03 08:20:54.137 NULL1000 NULLNULLNULL
2020-11-03 13:38:06.117 2000 NULLNULLNULLNULL
2020-11-03 13:39:04.137 2000 NULLNULLNULLNULL
2020-11-03 13:41:53.857 NULL3000 NULLNULLNULL
2020-11-03 13:43:07.780 NULL NULLNULL4000NULL
2020-11-03 13:43:51.780 NULLNULL4000NULL
2020-11-03 13:44:32.330 2000 NULLNULLNULLNULL
2020-11-03 13:46:44.293 2000NULLNULLNULL
2020-11-05 07:43:25.553 NULL3000 NULLNULLNULL
2020-11-05 07:44:44.853 4000 NULL NULL NULLNULLNULL

Я хочу преобразовать это(^) в это(v)

Таблица-02

Дата A B C D
2020-10-14 2000 2000 NULL NULL
2020-10-19 NULL 1000 2000 NULL
2020-11-02 1000 NULL NULL NULL
2020-11-03 8000 4000 8000 NULL
2020-11-05 4000 3000 NULL NULL

Ответы (2)

Вам нужно усечь datetime до date и group by date следующим образом:

SELECT cast(date as date) AS Date,
       SUM(A) AS A, SUM(B) AS B,
       SUM(C) AS C, SUM(D) AS D
  FROM your_table
GROUP BY cast(date as date);

Объедините по Date в запросе GROUP BY, а затем возьмите сумму каждого из 4 столбцов.

SELECT
    DATE(Date) AS Date,
    SUM(A) AS A,
    SUM(B) AS B,
    SUM(C) AS C,
    SUM(D) AS D
FROM `Таблица-01`
GROUP BY
    DATE(Date);

Вышесказанное относится к MySQL. Более общий ANSI-способ приведения столбца к дате - CAST(Date AS Date), но в любом случае точный ответ зависит от вашей реальной базы данных.

2022 WebDevInsider