SQL Oracle, выберите удалить текст и форматировать дату - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть 2 столбца:

   Name         Date
name1@group     43328                 
name1@group     43329                 
name2@group     43330
name2@group     43331                 
name3@group     43332                 
name3@group     43333

Это должен быть конечный результат, name из столбца Name (без @group) и максимальное число из столбца Дата:

Name        Date
name1       43329                 
name2       43331                 
name3       43333

Но максимальный номер в формате данных (столбец Дата):

Name        Date
name1       17-Aug-2018                 
name2       19-Aug-2018                 
name3       21-Aug-2018

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

regexp_substr() - это простой способ извлечь письмо.Арифметика даты довольно проста.Итак:

select regexp_substr(email, '[^@]+', 1, 1) as email, max(date '1900-01-01' + dte - 1)
from t
group by regexp_substr(email, '[^@]+', 1, 1) ;

Здесь - реекстер.

0 голосов
/ 28 сентября 2018

Одним из возможных решений является использование instr() и substr() для извлечения имени без группы.

SELECT substr("name", 1, instr("name", '@') - 1) "name",
       to_date('1900-01-01', 'YYYY-MM-DD') + max("date") - 1 "date"
       FROM elbat
       GROUP BY substr("name", 1, instr("name", '@') - 1);

Другим вариантом является использование regexp_substr().

SELECT regex_substr("name", '^[^@]+') "name",
       to_date('1900-01-01', 'YYYY-MM-DD') + max("date") - 1 "date"
       FROM elbat
       GROUP BY regex_substr("name", '^[^@]+');

У него есть преимущество, заключающееся в том, что в качестве имени используется вся строка, в ней не должно быть '@' по сравнению с первым, дающим пустую строку (например, NULL в Oracle) в таком случае.Регулярные выражения, вероятно, более требовательны к ресурсам.Вы также можете попытаться проверить наличие '@' и применить substr() к имени, если в нем есть '@'.


Редактировать:

Если эти числа взяты из Excel, вы должны вычесть один день, так как Excel ошибочно рассматривает 1900 как високосный год .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...