CROSSTAB могут теряться строки?
Использую вот такой запрос.
SELECT *
FROM crosstab( $$
SELECT date,
interval,
appeal_id,
client_id,
phone,
group_name,
region,
marker,
val
FROM table
$$,
$$
VALUES ('1'), ('2') -- marker
$$) AS ct ( date date,
interval varchar,
appeal_id int,
client_id int,
phone varchar,
group_name varchar,
region varchar,
val1 text,
val2 text);
Первые 7 столбцов остаются как есть, на основе 8 столбца создаются 2 дополнительных столбца, куда должны попасть первое и второе значение из столбца val, но при кросстабе теряется огромное число строк.
Я живой пример накидал SELECT * FROM crosstab( $$ SELECT * FROM (VALUES ('Урал', 111, '2021-03-01'::date, 1, 'Текст 1'), ('Урал', 111, '2021-03-01', 2, 'Текст 2'), ('Урал', 222, '2021-03-01', 1, 'Текст 1'), --потеряно ('Центр', 333, '2021-03-02', 1, 'Текст 1'), ('Волга', 444, '2021-03-03', 1, 'Текст 1') ) AS t(mrf, id, dt, mark, message) $$, $$ VALUES ('1'), ('2') $$) AS ct( mrf varchar, id int, dt date, message1 text, message2 text); помогите пожалуйста разобраться, теряется 3 строка из исходных данных
Ааааа, я понял, потому что функция в качестве уникального ключа воспринимает только самый первый столбец, надо просто ID туда вынести и все будет работать
Обсуждают сегодня