Olá comunidade,
Tenho o seguinte SELECT e gostaria de otimizá-lo. Eis o mesmo:
SELECT A.eq, B.id_eq, B.unidade, B.tensao_equip, B.nominal,
(SELECT MAX(Y.VALOR) FROM PAS_R X, bhpas_h_2009_05_01 Y WHERE
X.BH_CHAVE=Y.BH_CHAVE AND Y.BH_CHAVE = (SELECT BH_CHAVE FROM PAS_R WHERE ID =
B.id_eq AND bh_dthr_fim IS NULL)) AS maximo,
(SELECT MAX(Y.VALOR) FROM PAS_R X, bhpas_h_2009_05_01 Y WHERE
X.BH_CHAVE=Y.BH_CHAVE AND Y.BH_CHAVE = (SELECT BH_CHAVE FROM PAS_R WHERE ID =
B.id_eq AND bh_dthr_fim IS NULL))/B.nominal)*100 AS AS Percent,
CAST('2009_05_01' as DATE) as Data
FROM "EQUIPAMENTOS" AS A, "IDS_EQUIPAMENTOS" AS B, "RELATORIOS_EQUIPAMENTOS" AS
C WHERE A.eq = B.eq AND A.eq=C.eq AND C.nome_relatorio='ICE' ORDER BY percent
DESC;
**** (SELECT MAX(Y.VALOR) FROM PAS_R X, bhpas_h_2009_05_01 Y WHERE
X.BH_CHAVE=Y.BH_CHAVE AND Y.BH_CHAVE = (SELECT BH_CHAVE FROM PAS_R WHERE ID =
B.id_eq AND bh_dthr_fim IS NULL)) AS Maximo
O sub-select acimal calcula um determinado valor Maximo; tenho também que
mostrar em outra coluna o percentual obtido, o qual é o (Maximo/nominal)*100;
Para rodar, estou tendo que executar duas vezes o mesmo sub-select que retorna
o mesmo resultado para mostrar os dados que são necessários e isso tem deixado
a consulta lenta.
Gostaria de ficasse assim:
SELECT A.eq, B.id_eq, B.unidade, B.tensao_equip, B.nominal,
(SELECT MAX(Y.VALOR) FROM PAS_R X, bhpas_h_2009_05_01 Y WHERE
X.BH_CHAVE=Y.BH_CHAVE AND Y.BH_CHAVE = (SELECT BH_CHAVE FROM PAS_R WHERE ID =
B.id_eq AND bh_dthr_fim IS NULL)) AS maximo,
(maximo/B.nominal)*100 AS AS Percent,
CAST('2009_05_01' as DATE) as Data
FROM "EQUIPAMENTOS" AS A, "IDS_EQUIPAMENTOS" AS B, "RELATORIOS_EQUIPAMENTOS" AS
C WHERE A.eq = B.eq AND A.eq=C.eq AND C.nome_relatorio='ICE' ORDER BY percent
DESC;
Porém quando eu executo dessa forma o seguinte erro é exibido:
ERRO: coluna "maximo" não existe
LINE 5: (maximo/B.nominal)*100 AS Percent,
^
Fico no aguardo.
Newton Teixeira do Nascimento Junior Analista de Sistemas - CMAO
e-mail: [email protected]
<html>
<body>
<font face = "arial" size = "1" color = "#000080">Aviso:<br>"O emitente desta
mensagem é responsável por seu conteúdo e
endereçamento. Cabe ao destinatário cuidar quanto ao tratamento
adequado. Sem a devida autorização, a divulgação, a
reprodução, a distribuição ou qualquer outra
ação em desconformidade com as normas internas da ELETRONORTE S/A
são proibidas e passíveis de sanção disciplinar,
cível e criminal. Esta mensagem pode ser monitorada".
</font>
</body>
</html>_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral