SELECT L.cd_estabelecimento,L.dt_pagamento, E.nome_reduzido, L.cd_lote, L.dt_entrada,
L.vl_lote, L.dt_liberacao_pagamento
FROM LOTE L, ESTABELECIMENTO E
WHERE L.cd_estabelecimento = E.cd_estabelecimento
and
NOT EXISTS (
SELECT 1
FROM CONTRATO_AAR
WHERE cd_estabelecimento = L.cd_estabelecimento
AND cd_tipo_situacao_contrato_aar = 2 )
and
NOT EXISTS (
SELECT 1
FROM ESTABELECIMENTO_ADIANTAMENTO
WHERE cd_lote = L.cd_lote )
and
NOT EXISTS (
SELECT 1
FROM ESTABELECIMENTO_TAXA_NEGOCIADA
WHERE cd_lote = L.cd_lote
and dt_cancelamento IS NULL )
and (cd_motivo_devolucao_lote IS NULL OR cd_motivo_devolucao_lote = 29 )
and dt_cancelamento IS NULL
and l.dt_pagamento is not null
and l.dt_liberacao_pagamento is not null
Esse select retorna muito registro e gostaria de coloca um clausula que retorne apenas os registro de estabelecimento que possuam mas de 2 lotes por exemplo.
SELECT L.cd_estabelecimento,
L.dt_pagamento,
E.nome_reduzido,
L.cd_lote,
L.dt_entrada,
L.vl_lote,
L.dt_liberacao_pagamento
FROM LOTE L, ESTABELECIMENTO E
WHERE L.cd_estabelecimento = E.cd_estabelecimento
and NOT EXISTS (SELECT 1
FROM CONTRATO_AAR
WHERE cd_estabelecimento = L.cd_estabelecimento
AND cd_tipo_situacao_contrato_aar = 2)
and NOT EXISTS
(SELECT 1 FROM ESTABELECIMENTO_ADIANTAMENTO WHERE cd_lote = L.cd_lote)
and NOT EXISTS
(SELECT 1
FROM ESTABELECIMENTO_TAXA_NEGOCIADA
WHERE cd_lote = L.cd_lote
and dt_cancelamento IS NULL)
and (cd_motivo_devolucao_lote IS NULL OR cd_motivo_devolucao_lote = 29)
and dt_cancelamento IS NULL
and l.dt_pagamento is not null
and l.dt_liberacao_pagamento is not null
group by L.cd_estabelecimento
having count(*) > 12
SELECT L.cd_estabelecimento,count(*)
FROM LOTE L, ESTABELECIMENTO E
WHERE L.cd_estabelecimento = E.cd_estabelecimento
and NOT EXISTS (SELECT 1
FROM CONTRATO_AAR
WHERE cd_estabelecimento = L.cd_estabelecimento
AND cd_tipo_situacao_contrato_aar = 2)
and NOT EXISTS
(SELECT 1 FROM ESTABELECIMENTO_ADIANTAMENTO WHERE cd_lote = L.cd_lote)
and NOT EXISTS
(SELECT 1
FROM ESTABELECIMENTO_TAXA_NEGOCIADA
WHERE cd_lote = L.cd_lote
and dt_cancelamento IS NULL)
and (cd_motivo_devolucao_lote IS NULL OR cd_motivo_devolucao_lote = 29)
and dt_cancelamento IS NULL
and l.dt_pagamento is not null
and l.dt_liberacao_pagamento is not null
group by L.cd_estabelecimento
having count(*) > 2
SELECT t.*
FROM (SELECT l.cd_estabelecimento,
l.dt_pagamento,
e.nome_reduzido,
l.cd_lote,
l.dt_entrada,
l.vl_lote,
l.dt_liberacao_pagamento,
COUNT(l.cd_lote) over(PARTITION BY l.cd_estabelecimento) cnt_estabelecimento
FROM lote l, estabelecimento e
WHERE l.cd_estabelecimento = e.cd_estabelecimento
AND NOT EXISTS (SELECT 1
FROM contrato_aar
WHERE cd_estabelecimento = l.cd_estabelecimento
AND cd_tipo_situacao_contrato_aar = 2)
AND NOT EXISTS (SELECT 1 FROM estabelecimento_adiantamento WHERE cd_lote = l.cd_lote)
AND NOT EXISTS (SELECT 1
FROM estabelecimento_taxa_negociada
WHERE cd_lote = l.cd_lote
AND dt_cancelamento IS NULL)
AND (cd_motivo_devolucao_lote IS NULL OR cd_motivo_devolucao_lote = 29)
AND dt_cancelamento IS NULL
AND l.dt_pagamento IS NOT NULL
AND l.dt_liberacao_pagamento IS NOT NULL) t
WHERE t.cnt_estabelecimento > 2