Skip site navigation (1) Skip section navigation (2)

Detectar filas con n ulos

From: Jorge Tornero - Listas <jtorlistas(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Detectar filas con n ulos
Date: 2012-03-14 12:02:27
Message-ID: 4F6088D3.1040104@gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola a todos,

estoy intentando crear una vista en la cual el valor de tres columnas 
(pongamos por caso ptotal1,ptotal2,ptotal3) depende de los valores de 
varias columnas de la tabla original (pngamos por caso peso1,peso2,peso3).

En la tabla de origen pueden haber registros con los tres pesos, con 
dos, con uno o con ninguno. Si no hubiera ningún peso registrado, el 
valor de la columna ptotalX (entendido como una generalización de 
ptotal1,2,3..) sería NULO. Si, por el contrario, alguno de los valores 
existiese, cada columna ptotalX tomaría el valor pesoX, salvo que si 
pesoX es nulo tendría que tomar el valor 0, para que lo veáis mejor os 
muestro las 3 diferentes posibilidades:
CASO 1
pesol1=2.34 --> ptotal1=2.34
pesol2=2.44 --> ptotal2=2.44
pesol3=3.55 --> ptotal3=3.55

CASO 2
pesol1=null --> ptotal1=0
pesol2=2.44 --> ptotal2=2.44
pesol3=3.55 --> ptotal3=3.55

CASO 3
pesol1=null --> ptotal1=null
pesol2=null --> ptotal2=null
pesol3=null --> ptotal3=null

Lo estaba intentando hacer con un case creando un array de los tres 
campos y empleando any/some, pero no funciona probablemente porque se 
pierde un poco comparando valores nulos. Esto es lo que he hecho para 
cada uno de las columnas de la vista:

case when null!=any(array[peso1,peso2,peso3) and peso1 is null then 0 
else peso1 end as ptotal1 (con lo cual, si todos son nulos me pondrá 
nulo y si alguno de los pesos no lo es, me pondra el peso si el peso no 
es nulo y nulo si sí lo es)

Esto para el ptotal1, con los otros dos igual

Esto ya he comprobado que no funciona. ¿Alguna sugerencia?

Un saludo

jorge Tornero
IEO-Cádiz



In response to

pgsql-es-ayuda by date

Next:From: Rodrigo GonzalezDate: 2012-03-14 12:09:45
Subject: Re: Por favor, ayuda con esquemas
Previous:From: Gilberto Castillo MartínezDate: 2012-03-14 11:53:13
Subject: Re: Recuperar base de datos.

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group