1
resposta

Ajuda com select agrupado

Estou com uma dúvida em como que resolveria tal problema.

create table cotacao(
    id_cotacao number,
    id_item number,
    sit_item number
);

insert into cotacao values (1,2,0);
insert into cotacao values (1,3,0);
insert into cotacao values (1,4,1);

select id_cotacao,count(*) as recusado from cotacao
where sit_item = 0
group by id_cotacao;

select id_cotacao,count(*) as aprovado from cotacao
where sit_item = 1
group by id_cotacao;

Minha dúvida é, como que eu consigo unir a coluna "Reprovado" e "Aprovado" em uma consulta para que fique

| ID_Cotação | Aprovado | Reprovado |

1 resposta

Oii Rodrigo, tudo bem?

Você pode criar uma view para isso e fazer um join com a sua consulta, veja como eu fiz:

Criei uma view com a consulta do aprovado:

CREATE VIEW aprovado AS (

SELECT id_cotacao, COUNT(*) AS 'aprovado' FROM cotacao WHERE sit_item = 1 GROUP BY id_cotacao

)

Depois de criado, juntei a view aprovado com a tabela cotação, usando o id_cotacao como chave:

SELECT ct.id_cotacao,count(*) AS recusado, aprovado FROM cotacao ct

INNER JOIN aprovado ap ON ap.id_cotacao = ct.id_cotacao

WHERE sit_item = 0

GROUP BY ct.id_cotacao;

A instrução me retornou o seguinte:

Imgur

Adicionei mais uma cotação na tabela para ver se a view estava sendo atualizada:

INSERT INTO cotacao values (1,5,1);

Imgur

Agora tenho duas cotações aprovadas.

Espero ter ajudado. Qualquer dúvida é só me falar, tá bom? :)