Использование CONCAT в сочетании с SUBSTR - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу написать выборку, которая вернула бы мне только отдельные годы (2018, 2017,2016).

У меня есть столбец AS_OF_DATE в таблице HISTORY.

Вот несколько примеров значений AS_OF_DATE:

31-05-18,
31-04-17,
31-07-16,
...

Это то, что я пробовал, но это не работает:

SELECT CONCAT('20',DISTINCT SUBSTR(AS_OF_DATE, 7, 2) FROM HISTORY

Я использовал CONCAT для добавления20 перед результатом и SUBSTR, который начинается с 7-й строки и будет иметь длину 2 строки (поэтому я получаю 18,17,16 ...)

Ответы [ 4 ]

2 голосов
/ 15 апреля 2019

попробуйте как ниже

SELECT DISTINCT '20' || SUBSTR(AS_OF_DATE, 7, 2) FROM HISTORY
1 голос
/ 15 апреля 2019

Обычно вы делаете это с extract() или to_char():

select extract(year from as_of_date) as yyyy

или

select to_char(as_of_date, 'YYYY') as yyyy

Это предполагает, что as_of_date - это дата, которая должнаbe.

Вы можете добавить select distinct, если хотите получить набор результатов с разными годами.

0 голосов
/ 15 апреля 2019

это будет работать:

select distinct extract(year from as_of_date) from History;

функция extract снимает as_of_date при условии, что это тип данных date, а distinct выбирает только одну дату, которая в экстракте несколько раз.

0 голосов
/ 15 апреля 2019

Вы можете использовать

  SELECT CONCAT('20', SUBSTR(AS_OF_DATE, -2) ) as "Years"
    FROM HISTORY
   GROUP BY SUBSTR(AS_OF_DATE, -2)
   ORDER BY "Years"

Демо

...