Página 1 de 1

sub select

Enviado: Qua, 13 Fev 2008 3:27 pm
por henrique290
Tenho um select com varios sub select e funciona perfeitamente, so que agora esta me dando erro, já esta retornando mais de uma linha e ai aborta a execussão do mesmo.
Gostaria saber se tem alguma função ou procedure ou comando sql que me evite esta situação.

Exemplo: uma cidade deveria ter 1 analise de mercurio ao ano mas por necessidade fizeram duas, como faço para ele achar a primeira e ignorar a segunda ???

Abaixo so um exemplo

Selecionar tudo

SELECT S1.COD_US, S1.NMPROCEDENCIA,EXTRACT(MONTH FROM S1.DTENTRADA) mês,
EXTRACT(YEAR FROM S1.DTENTRADA)ANO,
/* MONITORAMENTO DE MERCURIO E AGROTOXICOS */
(SELECT DISTINCT S.VLMEDIDO
FROM SAA S
WHERE (((S.CDAMOSTRA)>22) AND ((S.NMCARACTERISTICA)='Mercúrio Total'))
AND S.COD_US=S1.COD_US
GROUP BY S.COD_US,S.VLMEDIDO)
FROM SAA S1, SSA_ISOLADO I
WHERE S1.COD_US IN(I.COD_US) 
GROUP BY S1.COD_US,S1.NMPROCEDENCIA,S1.DTENTRADA

Enviado: Qua, 13 Fev 2008 3:56 pm
por dr_gori
Pra pegar só uma linha, pega ROWNUM=1

Exemplo:

Selecionar tudo

SELECT
,  bla 
,  bla
,  bla
,  (select AAAAA from tab where ... AND ROWNUM=1 )   
from tabelas
where ...
Dessa forma o sub sempre vai trazer apenas 1 linha.

Enviado: Qui, 14 Fev 2008 6:27 am
por Marciel
Ou você pode usar uma função de agrupamento (MAX, MIN, SUM, dependendo do campo e do caso).