posgresql: Выбор конкретного столбца в существующей таблице и сортировка по абсолютным значениям в порядке убывания? - PullRequest
2 голосов
/ 18 октября 2019

У меня есть следующая таблица:

+----------+----------+---------+----------+----------+----------+
|  Date    |     A    |    B    |     C    |     P    |     D    |
+----------+----------+---------+----------+----------+----------+
|2019-01-10| -111,000 | 666,000 |   78,000 |       45 |  120,000 |
|2019-01-09|  555,000 |  55,000 |  100,000 |       55 |  700,000 |
|2019-01-08|   48,000 |  30,000 |   40,000 |       65 |  450,000 |
|2019-01-07|  600,000 |-450,000 | -800,000 |       90 |  980,000 |
+----------+----------+---------+----------+----------+----------+

Могу ли я узнать, как создать временную таблицу из существующей таблицы выше, чтобы она стала такой, как показано ниже:

+----------+----------+---------+----------+----------+
|  Date    |Components|  Values | Comp_no  |     P    |
+----------+----------+---------+----------+----------+
|2019-01-10|     A    |-111,000 |     1    |       45 |
|2019-01-10|     B    | 666,000 |     2    |       45 |
|2019-01-10|     C    |  78,000 |     3    |       45 |
+----------+----------+---------+----------+----------+

Затем сортируйтеэто в соответствии с абсолютными значениями, как показано ниже:

  1. Приведите числа к наибольшему значению как «1», 2-е по величине как «2» и т. д.

Sorted_comp_no представляетпорядок, в котором компоненты сортируются, где «1» - это «B», «2» - это «A», а «3» - это «C».

+----------+----------+---------+----------+----------+--------------+
|  Date    |Components|  Values | comp_no  |     P    | sort_sequence|
+----------+----------+---------+----------+----------+--------------+
|2019-01-10|     A    |-111,000 |     1    |       45 |       2      |
|2019-01-10|     B    | 666,000 |     2    |       45 |       1      |
|2019-01-10|     C    |  78,000 |     3    |       45 |       3      |
+----------+----------+---------+----------+----------+--------------+
Используйте comp_no и sort.

Компоненты теперь отсортированы по их значениям.

+----------+----------+---------+----------+----------+--------------+
|  Date    |Components|  Values | comp_no  |     P    |sorted_comp_no|
+----------+----------+---------+----------+----------+--------------+
|2019-01-10|     B    | 666,000 |     2    |       45 |       2      |
|2019-01-10|     A    |-111,000 |     1    |       45 |       1      |
|2019-01-10|     C    |  78,000 |     3    |       45 |       3      |
+----------+----------+---------+----------+----------+--------------+

Я уже создал шаблон временной таблицы, но все еще застрял ввзятие только имени конкретного столбца (A, B и C) для помещения в столбец собственной категории, игнорируя столбец D. Столбец P заносится во временную таблицу, но остается как есть. Существует также зависимость от столбца даты, поскольку существует несколько данных с разной датой.

Но конечная цель состоит в том, чтобы иметь возможность " сортировать определенный столбец по его абсолютному значению на определенную дату динамически ".

...