A configuração é um Debian 8 com Postgres 9.4 (64 bits se isso importa).
Dada a tabela a seguir, quero "pesquisar" uma combinação de colunas first
e colunas sub
e substituir sua saída por outra string.
CREATE TABLE public.rawdata (
first integer,
sub character varying COLLATE pg_catalog."default",
value integer
)
Dados de exemplo:
INSERT INTO rawdata VALUES
('1','A','5994'),('1','B','28525'),('1','C','18577'),
('2','A','30522'),('2','B','5238'),('2','C','18268'),
('3','A','982'),('3','B','13401'),('3','C','24158'),
('4','A','8544'),('4','B','31575'),('4','C','16661'),
('5','A','600'),('5','B','5242'),('5','C','8740'),
('6','A','2557'),('6','B','69'),('6','C','31572'),
('7','A','4212'),('7','B','26269'),('7','C','27918'),
('8','A','29821'),('8','B','22603'),('8','C','32578'),
('9','A','8027'),('9','B','13668'),('9','C','32000'),
('10','A','17673'),('10','B','11723'),('10','C','8937');
Por exemplo, as duas colunas '1' e 'A' devem ser lidas na saída como 'cat'.
Não deve haver alteração dos dados de origem.
Eu li sobre como usar WITH
para isso, mas não tenho certeza de como unir as colunas para que eu possa converter '(1, A)' para 'cat' e '(2, A)' para 'dog'.
Eu só preciso da saída onde eu tenho um "nome de substituição" definido.
O resultado final deve ficar assim:
Name Value
Cat 5994
Dog 30522
Infelizmente, estou limitado a fornecer a saída dessa maneira (se possível).
Normalmente, eu escreveria algo como:
select * from rawdata where first < 3
1 "A" 5994
1 "B" 28525
1 "C" 18577
2 "A" 30522
2 "B" 5238
2 "C" 18268
Mas o próximo passo é algo que não consigo descobrir.