AJUDA COM SELECT NO SQL

MFLAVIO 22/12/2022 13:44:05
#500924
Ola pessoal to me perdendo aqui para gerar uma pesquisa no banco de dados

em uma tabela tenho campos (DOC,Status,vencimento e etc)

preciso que a pesquisa retorne
todos os registros com status =CANCELADO não importa a data de vencimento, e também os que o status sejam <> de CANCELADO mais apenas dos últimos 6 meses
seria Select dentro de outro Select?
trabalho pouco com SQL e realmente me perdi nessa consulta
SINCLAIR 22/12/2022 15:19:57
#500925
Resposta escolhida
Prezado,

Não ficou claro qual banco de dados voce utiliza. Eu uso PostGreSQL, então darei informações genéricas, mas que com alguma pesquisa na documentação do banco de dados voce usa, será fácil adptar.

Voce deverá usar UNION. Voce tem duas consultas (SQL), faça os dois SQL em separados, depois junte ambos com UNION, assim:

select BLA, BLA, BLA from tabela where (....)
UNION
select BLA, BLA, BLA from tabela where (....)

Detalhe: ambos os SQL devem retornar as mesmas colunas, para que o UNION funcione. Também existe o UNION ALL, que tem algumas diferenças do UNION.
MFLAVIO 22/12/2022 15:27:47
#500926
Citação:

:
Prezado,

Não ficou claro qual banco de dados voce utiliza. Eu uso PostGreSQL, então darei informações genéricas, mas que com alguma pesquisa na documentação do banco de dados voce usa, será fácil adptar.

Voce deverá usar UNION. Voce tem duas consultas (SQL), faça os dois SQL em separados, depois junte ambos com UNION, assim:

select BLA, BLA, BLA from tabela where (....)
UNION
select BLA, BLA, BLA from tabela where (....)

Detalhe: ambos os SQL devem retornar as mesmas colunas, para que o UNION funcione. Também existe o UNION ALL, que tem algumas diferenças do UNION.


uso firebir 2.5
ALVAROVB2009 22/12/2022 16:18:53
#500928
Talvez seja uma pesquisa mais fácil, pelo que entendi é uma única tabela ( em uma tabela tenho campos (DOC,Status,vencimento e etc) ), então ficaria algo assim em um único select e usando a condição OR

select * from suatabela
where ( status = "Cancelado" ) <- sua primeira condição todos os registros com status =CANCELADO não importa a data de vencimento
or ( status <> "Cancelado" and datavencimento <= 22/06/2022 ) <- sua segunda consição - e também os que o status sejam <> de CANCELADO mais apenas dos últimos 6 meses

Dessa forma ele vai trazer tudo, se o registro estiver cancelado e se CASO o registro não estiver cancelado e for de 6 meses para trás
Tópico encerrado , respostas não são mais permitidas