2016-08-01 2 views
0

Я пытаюсь создать текстовую строку для последующего использования в полудинамической функции кросс-таблицы.Создание текстовой строки получает неправильный вывод (postgresql)

Все хорошо, пока я не использовать формат «Числовой (х, х)

SELECT concat('sign varchar,',(SELECT string_agg(col,',') 
FROM (SELECT to_char(generate_series('2016-01-01','2016-01-15', interval '1 week'),'\"iyyy-iw\" numeric(10,2)')col)cols)) 

Выход очень странно. Буква„я“заменяется номером.

sign varchar,"2015-53" numer5c(10,2),"2016-01" numer6c(10,2),"2016-02" numer6c(10,2) 

Как получить правильную текстовую строку с «числовым (х, х)» в колонке формата

Sqlfiddle: http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/10313

TIA,

+0

Это похоже на год в вашей серии, где i используется в '\ "iyyy-iw \". Эти i будут заменены где-то. –

+0

Я не уверен. Замена формата «ГГГГ-ММ-ДД» не имеет значения. "http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/10331 – sibert

ответ

3

Напишите "numeric(10,2)" вместо numeric(10,2) в вашей строке формата.

The fine manual говорит:

Обычный текст разрешен в to_char шаблонов и будет выводиться в буквальном смысле. Вы можете поместить подстроку в двойные кавычки, чтобы заставить ее интерпретироваться как литерал, даже если он содержит ключевые слова шаблона.

+0

Отлично. Спасибо! – sibert