Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal bom dia
estou executando a seguinte consulta e obtendo o resultado:
SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end) USINAS_BAIXA,
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) USINA_ALTA
FROM TC0200
WHERE C_DATA >= '2012/03/5' and
C_DATA <= '2012/03/5' AND
(
C_ENSAIO = 'H2OALM'
)
DIA=========H20========USINAS_BAIXA==USINA_ALTA
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
2012-03-05==29.73======0==============29.73
2012-03-05==28.48======0==============28.48
2012-03-05==28.31======0==============28.31
2012-03-05==29.56======0==============29.56
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
Eu estou querendo fazer uma média entre dos valores das usinas baixas e da usina alta, retirando os valores de zero que está impactando no valor da média.
Eu já fiz um case que aprendi aqui mas ainda o zero impacta.
Pois irei criar uma soma da (USINA ALTA + USINA BAIXA) / 2 -- MÉDIA SIMPLES
Do mais pessoal grato desde já
>
Pelo que entendi
SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end) USINAS_BAIXA,
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) USINA_ALTA
FROM TC0200
WHERE C_DATA >= '2012/03/5' and
C_DATA <= '2012/03/5' AND
(
C_ENSAIO = 'H2OALM'
)
and
(
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end) <> 0
and
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) <> 0
)
Motta boa tarde
É realmente o que você entende, no código que você me passou não funcionou para as duas usinas, mas quando deixo uma só ele realmente retira todos os zeros, como ficaria para as duas?
Tem como separar um bloco para uma usina e outro bloco para outra usina?
Segue a consulta (campos comentados) alterada para apenas uma usina:
SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end ) USINAS_BAIXA
,
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) USINA_ALTA
FROM TC0200
WHERE C_DATA >= '2012/03/5' and
C_DATA <= '2012/03/5' AND
(
C_ENSAIO = 'H2OALM'
)
andDIA H20 USINAS_BAIXA USINA_ALTA
2012-03-05 29.68 29.68 0
2012-03-05 29.16 29.16 0
2012-03-05 28.06 28.06 0
2012-03-05 29.27 29.27 0
2012-03-05 29.68 29.68 0
2012-03-05 29.16 29.16 0
2012-03-05 28.06 28.06 0
2012-03-05 29.27 29.27 0
2012-03-05 29.68 29.68 0
2012-03-05 29.16 29.16 0
2012-03-05 28.06 28.06 0
2012-03-05 29.27 29.27 0
Grato desde já pela ajuda
Tente
SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end) USINAS_BAIXA,
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) USINA_ALTA
FROM TC0200
WHERE C_DATA >= '2012/03/5' and
C_DATA <= '2012/03/5' AND
(
C_ENSAIO = 'H2OALM'
)
and
(
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end) <> 0
or -- estava and
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) <> 0
)
Motta boa tarde
O resultado foi o mesmo do primeiro select:
DIA=========H20========USINAS_BAIXA==USINA_ALTA
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
2012-03-05==29.73======0==============29.73
2012-03-05==28.48======0==============28.48
2012-03-05==28.31======0==============28.31
2012-03-05==29.56======0==============29.56
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
Certa vez eu vi uma consulta que separava um resultado num bloco por exemplo T1# e ou resultado em T2#, e no final os dois se união, eu não sei ainda fazer desta forma será que não seria uma solução?
Do mais grato desde já.
Síntaxe básica do union
select campo1,campo2,campo3
from tabela
where campo4 = 1
union all
select campo1,campo2,campo3
from tabela
where campo4 = 2
>
Síntaxe básica do union
select campo1,campo2,campo3
from tabela
where campo4 = 1
union all
select campo1,campo2,campo3
from tabela
where campo4 = 2
Motta com o Union funcionou.
Muito obrigado
Pelo que entendi
SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end) USINAS_BAIXA,
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) USINA_ALTA
FROM TC0200
and
(
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0
end) <> 0
and
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end) <> 0
)