Как преобразовать месяцы из числовой формы в строковую в SQL-запросе, содержащем GROUP BY?

Итак, я создаю представление, которое извлекает кучу данных (с агрегатом SUM в одном поле). Запрос содержит предложение GROUP BY, и когда я выполняю преобразование месяца в запросе следующим образом, я получаю ошибку %invalid character%.

SELECT Code, Name, Products, SUM(Costs) AS TOTAL, 
Year, to_char(to_date(PurchaseMonth),'DD-Mon-yyyy') AS MonthProductPurchased
FROM ProductCatalog
<BUNCH OF JOINS HERE>
WHERE ABC.Code=DEF.Code AND Products IS NOT null
GROUP BY Code, Name, Products, Year, MonthProductPurchased;

Так, например, я хочу преобразовать «1» в поле «Месяц» в «Январь», «2» в февраль и т. д. и т. д.


person user2425909    schedule 03.10.2014    source источник


Ответы (1)


Я вижу, у вас есть что-то под названием PurchaseMonth, и оно принимает значения 1, 2, 3 и т. д. Вы хотите преобразовать их в названия месяцев. Как насчет этого?

to_char(to_date('2000-' || PurchaseMonth || '-01'), 'YYYY-MM-DD'), 'MONTH')
person Gordon Linoff    schedule 03.10.2014
comment
Итак, в моем предложении Group By я включу PurchaseMonth, верно? - person user2425909; 03.10.2014
comment
Проблема, с которой я сталкиваюсь, заключается в том, что я получаю желтые волнистые линии в инструкции SELECT с подсказкой о включении to_char(to_date('2000-' || PurchaseMonth || '-01'), 'ГГГГ-ММ-ДД') , 'МЕСЯЦ') в предложении GROUP BY. Я попробовал псевдоним, и он не принимает его. Что мне добавить в предложение Group By, чтобы ошибка исчезла? - person user2425909; 03.10.2014
comment
@user2425909 . . . Поместите все выражение в group by или только PurchaseMonth. - person Gordon Linoff; 03.10.2014
comment
Это сработало. Он все еще показывает желтые волнистые линии в SQL Developer, но запрос работает отлично, как вы указали. Спасибо чувак. - person user2425909; 03.10.2014
comment
to_char(to_date(PurchaseMonth, 'MM'), 'MONTH') было бы достаточно! - person Maheswaran Ravisankar; 03.10.2014
comment
@MaheswaranRavisankar . . . неполные даты заставляют меня нервничать. - person Gordon Linoff; 03.10.2014