Группировка по TIMESTAMP`S Дата в Oracle - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь сгруппировать по дате и времени в oracle, пока я использовал to_char. Но мне нужен другой способ. Я пробовал, как показано ниже:

    SELECT d.summa,
           d.FILIAL_CODE,
           to_char(d.DATE_ACTION, 'YYYY-MM-DD')
    FROM table1 d
    WHERE d.action_id = 2
      AND d.date_action Between to_date('01.01.2020', 'dd.mm.yyyy') AND to_date('01.03.2020', 'dd.mm.yyyy')
    GROUP BY to_char(d.DATE_ACTION, 'YYYY-MM-DD')

table1

-----------------------------------------------------
summa      |  filial_code    | date_action
--------------------------------------------------
100000.00  |  2100           | 2016-09-13 11:04:32
320000.12  |  3200           | 2016-09-12 21:04:58
400000.00  |  2100           | 2016-09-13 15:12:45
510000.12  |  3200           | 2016-09-15 09:30:58
------------------------------------------------------

Мне нужно как ниже

-------------------------------------------
summa      |  filial_code    | date_action
------------------------------------------
500000.00  |  2100           | 2016-09-13 
320000.12  |  3200           | 2016-09-12 
510000.12  |  3200           | 2016-09-15 
------------------------------------------

Но мне нужно кроме to_char функция. Я пытался trunc, но я не мог этого сделать

1 Ответ

3 голосов
/ 05 февраля 2020

Использование TRUNC должно фактически преобразовать его в дату и удалить часть времени, но вам также нужно обрабатывать другие ваши столбцы. Либо сгруппируйте их, либо используйте функцию агрегирования:

SELECT SUM( d.summa ) AS summa,
       d.FILIAL_CODE,
       TRUNC(d.DATE_ACTION) AS date_action
FROM table1 d
WHERE d.action_id = 2
  AND d.date_action Between to_date('01.01.2020', 'dd.mm.yyyy')
                        AND to_date('01.03.2020', 'dd.mm.yyyy')
GROUP BY TRUNC(d.DATE_ACTION), d.FILIAL_CODE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...