Используйте peewee для выравнивания строк в столбцах - PullRequest
1 голос
/ 02 июля 2019

Бэкэнд базы данных - это postgresqlon gcp.

У меня есть группа строк в таблице с идентификатором. Я пытаюсь сгладить его в строках с несколькими столбцами.

CREATE TABLE public.lines
(
    line_no int NOT NULL,
    line_content character varying(60) COLLATE pg_catalog."default" NOT NULL,
    parent_id integer NOT NULL,
)

с данными

(1,'content 1',parent1)
(2,'content 2',parent1)
(3,'content 3',parent1)
...

Попытка выяснить запрос, чтобы сгладить результат по столбцам,

select line1, line2,line3
where parent='parent1'

Как это сделать ?? СПАСИБО !!!!

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Это не работает.Базы данных Sql являются табличными.Вы не можете просто произвольно вернуть строки шириной X-столбцов.

Лучше всего использовать что-то вроде Postgres 'array_agg, которое будет возвращать массив.В противном случае вы можете использовать group_concat или что-то еще для создания списка, разделенного запятыми.

Но это пахнет и, вероятно, является ужасной идеей.

Просто сделайте свертывание / сглаживание в кодеесли нужно.

0 голосов
/ 11 июля 2019

Если в PostgreSQL вы действительно ищете "сводную таблицу". Я бы посмотрел на функцию crosstab (см. здесь .), Которая обрабатывает вещи в формате:

name value
A    1
A    2
B    3
B    4
B    5

и производит

A 1  2  3
B 3  4  5
...