Tenho uma tabela que possui uma coluna de data e as vezes, posso ter mais de 1 registro e a diferenca eh pela data. Tem como eu fazer um select com min() e ele soh me retornar o min se o registro existir mais de 1x?
Seria algo como:
select ASSOCIACAO.DT_CADASTRO_SISTEMA, ASSOCIACAO.COD_BARRAS_TALAO, MENSAGEM_RECEBIDA.COD_BARRAS_TALAO,
case (select count(*) from MENSAGEM_RECEBIDA where MENSAGEM_RECEBIDA.COD_BARRAS_TALAO = ASSOCIACAO.COD_BARRAS_TALAO > 1, min(MENSAGEM_RECEBIDA.DATA_HORA), null),
MENSAGEM_RECEBIDA.COD_BARRAS_OPERADOR, MENSAGEM_RECEBIDA.COD_BARRAS_PONTO_VENDA from ASSOCIACAO
left join MENSAGEM_RECEBIDA on ASSOCIACAO.COD_BARRAS_TALAO = MENSAGEM_RECEBIDA.COD_BARRAS_TALAO
where ASSOCIACAO.ID_USUARIO_OPERADOR is null
and ASSOCIACAO.DT_DEVOLUCAO_SUPERVISOR is null
and ASSOCIACAO.DT_CADASTRO_SISTEMA = '2009-05-17'
order by ASSOCIACAO.COD_BARRAS_TALAO
Mas assim a query nao executa. Isso que eu quero fazer, funciona?
Vc leu a query? Ali tem um Case q eu inventei e queria q ele funcionasse assim: se o count(*) for maior que 1, entao eu busco pelo min(DT_BLABLABLA) e se for diferente de maior que 1, entao ele retorna NULL.
select ASSOCIACAO.DT_CADASTRO_SISTEMA, ASSOCIACAO.COD_BARRAS_TALAO, MENSAGEM_RECEBIDA.COD_BARRAS_TALAO,
if (select count(*) from MENSAGEM_RECEBIDA where MENSAGEM_RECEBIDA.COD_BARRAS_TALAO = ASSOCIACAO.COD_BARRAS_TALAO > 1, min(MENSAGEM_RECEBIDA.DATA_HORA), null) as DATA_DOIDA,
MENSAGEM_RECEBIDA.COD_BARRAS_OPERADOR, MENSAGEM_RECEBIDA.COD_BARRAS_PONTO_VENDA from ASSOCIACAO
left join MENSAGEM_RECEBIDA on ASSOCIACAO.COD_BARRAS_TALAO = MENSAGEM_RECEBIDA.COD_BARRAS_TALAO
where ASSOCIACAO.ID_USUARIO_OPERADOR is null
and ASSOCIACAO.DT_DEVOLUCAO_SUPERVISOR is null
and ASSOCIACAO.DT_CADASTRO_SISTEMA = '2009-05-17'
order by ASSOCIACAO.COD_BARRAS_TALAO