В БД postgresql сделать выборку строк по нескольким столбцам
Есть след таблица:
uuid | call_id_in | call_id_out |
---|---|---|
1 | 111 | null |
2 | 666 | 444 |
3 | 222 | 111 |
4 | 777 | 888 |
На выходе требуется получить выборку строк, где call_id_in == call_id_out и новый инкрементируемый столбец channel_id - начинается с 1.
channel_id | call_id_in | call_id_out |
---|---|---|
1 | 111 | 222 |
SELECT
call_id_in, call_id_out
FROM
call
WHERE
call_id_in IN (SELECT call_id_in FROM call GROUP BY call_id_in)
AND call_id_out IN (SELECT call_id_out FROM call)
ORDER by call_id_in;
Ответы (1 шт):
Автор решения: AlexanderSt
→ Ссылка
Вот так:
select ROW_NUMBER() over() as channel_id,
t1.call_id_in as call_id_in,
t2.call_id_in as call_id_out
from test1 t1, test1 t2
where t1.call_id_in = t2.call_id_out
И еще - не стоит называть таблицы служебными словами SQL