Select com varios dados mas não funciona com dados NULL

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Ter, 18 Set 2007 7:57 pm

Olá galera,
estou com um problema para retornar dados NULOS, no banco o campo ANO esta como NULL e numérico, o cliente cadastrou dados de 0 até 2008, e teve alguns registros q ele não colocou nada nesse campo, ou seja ficou NULL

Código: Selecionar todos
select distinct * from
(select
*
from
(
SELECT
NVL(C.OLDSTOCKNUMBER,C.EUSTOCKNUMBER) AS StockCode,
rtrim(ltrim(substr(AC.DESC_ALTERNATIVA,1,3))) AS Alt,
r.SIGLA as Regiao,
NVL(NC.DESCRICAO_REG,NC.DESCRICAO_GLO) AS DescCor,
M.DESC_MONTADORA AS Montadora,
RUC.ANO,
Q.SIGLA_QUALIDADE AS Qld,
FC.COD_COMP,
FC.QUANTIDADE as Qtd100gr,
F.COD_FORMULA,
decode(F.PE_PRATICO,0,f.PE_TEORICO,F.PE_PRATICO) as QualPE,
FC.ORDEM
FROM
REL_QUALIDADE_COR A, QUALIDADE Q, ALTERNATIVA_COR AC, COR C,
tmp_NOME_COR NC, FORMULA F, FORMULA_COMPONENTES FC, COMPONENTE COM, MONTADORA M, REGIAO R,
REL_USO_COR RUC ,
(
SELECT
F.COD_FORMULA,
sum(fc.QUANTIDADE) as Cgr
FROM
REL_QUALIDADE_COR A, QUALIDADE Q, ALTERNATIVA_COR AC, COR C, tmp_NOME_COR NC, FORMULA F, FORMULA_COMPONENTES FC, COMPONENTE COM
WHERE
A.COD_QUALIDADE IN (SELECT B.COD_QUALIDADE FROM LINHA_QUALIDADE B WHERE B.COD_LINHA_PRODUTO = 2) AND
A.COD_QUALIDADE = Q.COD_QUALIDADE AND
A.COD_ALTERNATIVA = AC.COD_ALTERNATIVA AND
AC.COD_COR = C.COD_COR AND
AC.COD_COR = NC.COD_COR AND AC.COD_REGIAO = NC.COD_REGIAO AND
A.COD_FORMULA_COR = F.COD_FORMULA_COR AND
F.COD_FORMULA = FC.COD_FORMULA AND
FC.COD_COMP = COM.COD_COMPONENTE
group BY
F.COD_FORMULA,f.PE_TEORICO,F.PE_PRATICO
) ww
WHERE
A.COD_QUALIDADE IN (SELECT B.COD_QUALIDADE FROM LINHA_QUALIDADE B WHERE B.COD_LINHA_PRODUTO = 2 ) AND
A.COD_QUALIDADE = Q.COD_QUALIDADE AND
A.COD_ALTERNATIVA = AC.COD_ALTERNATIVA AND
AC.COD_COR = C.COD_COR AND
AC.COD_COR = NC.COD_COR AND
AC.COD_COR = RUC.COD_COR AND
AC.COD_REGIAO = RUC.COD_REGIAO AND
AC.COD_REGIAO = NC.COD_REGIAO AND
A.COD_FORMULA_COR = F.COD_FORMULA_COR AND
F.COD_FORMULA = FC.COD_FORMULA AND
FC.COD_COMP = COM.COD_COMPONENTE and
ww.COD_FORMULA = F.COD_FORMULA AND
C.COD_MONTADORA = M.COD_MONTADORA AND
AC.COD_REGIAO = R.COD_REGIAO and
Q.SIGLA_QUALIDADE = 'K' and
STATUS = 'Y' and
RUC.ANO < 1954
) mm)
ORDER BY
ANO,
DescCor,
Alt,
Qld,
COD_FORMULA,
ORDEM
FFernando
Localização: SP

Mensagemem Ter, 18 Set 2007 7:59 pm

já tentei utilizar o is null, ruc.ano = null, estou pensando em utilizar algum comando para que substitua todos os valores NULOS para 1 ou "
Como posso fazer isso?
FFernando
Localização: SP

Mensagemem Qua, 19 Set 2007 7:38 am

Ai vai uma dica brother:

Código: Selecionar todos
UPDATE TABELA_X
      SET CAMPO_Y = 1
  WHERE CAMPO_Y IS NULL;


Nota importante: Sempre atente-se à clausula Where.
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Qua, 19 Set 2007 8:34 am

Obrigado Trevisolli, vou testar daqui a pouco quando chegar no trabalho,
mas me tira uma duvida por gentileza.
Nos registros dessa empresa, já tem dados cadastrados com o campo ANO em branco, eu alterando o tipo desse campo para 1, ele mudará automaticamente TODOS os registros já cadastrados p 1??
FFernando
Localização: SP

Mensagemem Qua, 19 Set 2007 11:02 am

Brother, seguinte...
Com o código abaixo:

Código: Selecionar todos
UPDATE TABELA_X
   SET ANO = 1
WHERE ANO IS NULL;


Ele irá popular todos os registros, onde o ANO seja nulo, para ANO = 1.
qualquer coisa, manda ai.
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Qua, 19 Set 2007 8:30 pm

opa, beleza cara?
obrigado pela ajuda, mas não posso executar esse comando na base do cliente, fiz esse select e na clausula where coloquei ano is nullele me retornou algumas informações com o campo ano em branco..
Mas mesmo assim, ainda falta algumas.. tem mta coisa amarrada nesse select... já to ficando doio.. to tentando descobrir o porque dele não tarzer alguns registros..

o que poderia fazer nesse select GIGANTESCO para retornar os resultados mais rapido???
FFernando
Localização: SP

Mensagemem Qui, 20 Set 2007 9:40 am

Brother,

A melhor coisa seria realizar um Explain...
Verificar a utilização destes NVL's etc...
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


      Voltar para SQL

      Quem está online

      Usuários navegando neste fórum: Google [Bot] e 4 visitantes