вставить заявление в postgresql - PullRequest
0 голосов
/ 11 октября 2018

У меня есть таблица с 8 записями.

У меня есть 4 записи на 17 декабря, те же 4 записи на 18 января (только изменения за год)

Я пытаюсь получить то же самоерекорды за месяц 18 февраля.Все значения столбцов должны быть одинаковыми, только yearmon должен измениться на 18 февраля.

Я могу написать оператор вставки, если у меня меньше 5 записей.Есть ли другой способ написать запрос для получения желаемого результата?

income   score_1  score_2  rank  yearmon
     800      77      90      10   Dec-17
     900      72      44      99   Dec-17
     700      62      44      06   Dec-17
     600      55      23      06   Dec-17
     800      77      90      10   Jan-18
     900      72      44      99   Jan-18
     700      62      44      06   Jan-18
     600      55      23      06   Jan-18

Вывод выглядит как

   income   score_1  score_2  rank  yearmon
     800      77      90      10    Dec-17
     900      72      44      99    Dec-17
     700      62      44      06    Dec-17
     600      55      23      06    Dec-17
     800      77      90      10    Jan-18
     900      72      44      99    Jan-18
     700      62      44      06    Jan-18
     600      55      23      06    Jan-18
     800      77      90      10    Feb-18
     900      72      44      99    Feb-18
     700      62      44      06    Feb-18
     600      55      23      06    Feb-18

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Сначала вставьте все Отдельные значения дохода, оценка_1, оценка_2, комбинация RANK.затем обновите yearmon до Feb-18

INSERT INTO T
       SELECT DISTINCT income, score_1, score_2, RANK
         FROM T;

    UPDATE T
       SET yearmon = 'Feb-18'
     WHERE yearmon IS NULL;
0 голосов
/ 11 октября 2018

Это отвечает на исходный вопрос.

Самый простой метод: union all:

select income, score_1, score_2, rank, yearmon
from t
union all
select income, score_1, score_2, rank, 'Feb-2018'
from t;

Если вы хотите изменить таблицу, тогда insert:

insert into t (income, score_1, score_2, rank, yearmon)
    select income, score_1, score_2, rank, 'Feb-2018'
    from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...