powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Оператор Case when then else
4 сообщений из 4, страница 1 из 1
Оператор Case when then else
    #39837332
Angelo Lagusa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, ребята.

Подскажите мне, буду благодарен.

У меня есть таблица restr_type
restr_type
RF1U
RF1U
RF2J;RF1J
RF3J;RS2G;RF1U
RF1U
RF1U
RF2U;RF1U
RF1U
RF1U
RF4U;RF3U;RF2U;RF1U
RF1U
RF1U
RF1U
RF1J

G - Изменение срока кредитования
I - Изменение суммы займа
J - Изменение графика погашения
L - Изменение размера ставки вознаграждения
N - Отмена/снижение/изменение порядка уплаты комиссий/пеней/штрафов
Q - Изменение порядка погашения
U - Иное


Мне нужно разделить эти значение(G,I,J,L,N,Q,U) на отдельные столбцы как column.name(restr_type),
Вот мой код, я написал но что то неверно:

WITH MODIFICATION AS (
SELECT s.restr_type, period_report
CASE WHEN (CASE WHEN s.restr_type = 'G' THEN 'Изменение срока кредитования' ELSE null END) THEN 'modif_type_G'
WHEN (CASE WHEN s.restr_type = 'I' THEN 'Изменение суммы займа' ELSE null END) THEN 'modif_type_I'
WHEN (CASE WHEN s.restr_type = 'J' THEN 'Изменение графика погашения' ELSE null END) THEN 'modif_type_J'
WHEN (CASE WHEN s.restr_type = 'L' THEN 'Изменение размера ставки вознаграждения' ELSE null END) THEN 'modif_type_L'
WHEN (CASE WHEN s.restr_type = 'N' THEN 'Отмена/снижение/изменение порядка уплаты комиссий/пеней/штрафов' ELSE null END) THEN 'modif_type_N'
WHEN (CASE WHEN s.restr_type = 'Q' THEN 'Изменение порядка погашения' ELSE null END) THEN 'modif_type_Q'
WHEN (CASE WHEN s.restr_type = 'U' THEN 'Иное' ELSE null END) THEN 'modif_type_U'
END AS modif,
from portfolio.ssudnik
WHERE s.period_report between '01.01.2018' and '01.04.2019'
group by period_report
...
Рейтинг: 0 / 0
Оператор Case when then else
    #39837954
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Angelo LagusaМне нужно разделить эти значение(G,I,J,L,N,Q,U) на отдельные столбцы как column.name(restr_type),
Вот мой код, я написал но что то неверно:

CASE WHEN (CASE WHEN s.restr_type = 'G' THEN 'Изменение срока кредитования' ELSE null END) THEN 'modif_type_G'
WHEN (CASE WHEN s.restr_type = 'I' THEN 'Изменение суммы займа' ELSE null END) THEN 'modif_type_I'
WHEN (CASE WHEN s.restr_type = 'J' THEN 'Изменение графика погашения' ELSE null END) THEN 'modif_type_J'
WHEN (CASE WHEN s.restr_type = 'L' THEN 'Изменение размера ставки вознаграждения' ELSE null END) THEN 'modif_type_L'
WHEN (CASE WHEN s.restr_type = 'N' THEN 'Отмена/снижение/изменение порядка уплаты комиссий/пеней/штрафов' ELSE null END) THEN 'modif_type_N'
WHEN (CASE WHEN s.restr_type = 'Q' THEN 'Изменение порядка погашения' ELSE null END) THEN 'modif_type_Q'
WHEN (CASE WHEN s.restr_type = 'U' THEN 'Иное' ELSE null END) THEN 'modif_type_U'
END AS modif
По факту это у вас одна колонка.
Уберите лишний внешний case.
...
Рейтинг: 0 / 0
Оператор Case when then else
    #39838147
Angelo Lagusa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte, а как разделить эти значение на отдельные столбцы. Через функцию CROSSTAB?
...
Рейтинг: 0 / 0
Оператор Case when then else
    #39840104
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Angelo LagusaMegabyte, а как разделить эти значение на отдельные столбцы. Через функцию CROSSTAB?
Намудрили, почитайте справку по синтаксису.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
CASE WHEN s.restr_type = 'G' THEN 'Изменение срока кредитования' ELSE null END) THEN 'modif_type_G',
CASE WHEN s.restr_type = 'I' THEN 'Изменение суммы займа' ELSE null END) THEN 'modif_type_I',
CASE WHEN s.restr_type = 'J' THEN 'Изменение графика погашения' ELSE null END) THEN 'modif_type_J',
CASE WHEN s.restr_type = 'L' THEN 'Изменение размера ставки вознаграждения' ELSE null END) THEN 'modif_type_L',
CASE WHEN s.restr_type = 'N' THEN 'Отмена/снижение/изменение порядка уплаты комиссий/пеней/штрафов' ELSE null END) THEN 'modif_type_N',
CASE WHEN s.restr_type = 'Q' THEN 'Изменение порядка погашения' ELSE null END) THEN 'modif_type_Q',
CASE WHEN s.restr_type = 'U' THEN 'Иное' ELSE null END) THEN 'modif_type_U'
...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Оператор Case when then else
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]