Eu tenho uma tabela que se parece com o seguinte:
|device_id | login_id |
-----------------------
| 1 | NULL |
| 2 | A |
| 3 | A |
| 4 | NULL |
| 5 | B |
| 5 | C |
-----------------------
Desejo gerar uma nova coluna (person_id) como a seguir. A coluna essencialmente gera um identificador exclusivo (pessoa). Cada novo valor NULL obtém seu próprio unique_id e cada login_id não nulo distinto obtém seu próprio person_id exclusivo.
|device_id | login_id | person_id |
-----------------------------------
| 1 | NULL | 1 |
| 2 | A | 2 |
| 3 | A | 2 |
| 4 | NULL | 3 |
| 5 | B | 4 |
| 5 | C | 5 |
-----------------------------------
Existe uma maneira de fazer isso no PostgreSQL puro sem passar por uma série de consultas e tabelas temporárias? Estou usando o PostgreSQL 9.4. Qualquer ajuda é muito apreciada.