Consulta sobre select

04/08/2004 - 14:49 por Ricardo L. Calvo | Informe spam
Hola a todos, estoy empezando con el lenguaje y me encuentro con problemas q
supongo son basicos.

Ejemplo: tengo dos tablas, A con 5 registros y B con 2, los 2 registros de B
estan contenidos en A.
Entonces hago un lef outer join de A hacia B y me quedo con lo que necesito,
hasta aca todo bien pero necesito tambien en el conjunto resultado un campo
que surge como la resta de una columna numerica de A y otra de B, en ese
caso esa columna solo trae valores cuando hay un registro en B y para el
resto me viene null.

A_1 A_2
a 10
b 20
c 15
d 30
f 20

B_1 B_2
b 5
d 10

Resultado esperado de A_2 - B_2 :

a 10
b 15
c 15
d 20
f 20

Resultado obtenido

a null
b 15
c null
d 20
f null

Se puede resolver la consulta en la misma instrucción select o deberé
hacerlo en mas de una ?

Muchas gracias por su tiempo

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
04/08/2004 - 14:58 | Informe spam
Mira en los BOL la sintaxis de la función ISNULL. Con ella puedes
sustituir el valor de un campo cuando su contenido es NULL por lo que tú
necesites. En este caso, como quieres una resta, tendrías que sustituirlo
por 0: ISNULL(tuCampo,0)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Ricardo L. Calvo" escribió en el mensaje
news:#
Mostrar la cita
q
Mostrar la cita
B
Mostrar la cita
necesito,
Mostrar la cita
campo
Mostrar la cita
#2 Xavi
04/08/2004 - 15:02 | Informe spam
SELECT a = A1, b = A1 - ISNULL( B1, 0 )
FROM A
LEFT JOIN B ON A.A_1 = B.B_1


Xavi


"Ricardo L. Calvo" escribió en el mensaje
news:%
Mostrar la cita
q
Mostrar la cita
B
Mostrar la cita
necesito,
Mostrar la cita
campo
Mostrar la cita
#3 ulises
04/08/2004 - 15:13 | Informe spam
El problema es que una diferencia del estilo A2 - B2 en el
cual uno de los datos es NULL siempre te dará NULL (a
menos que alteres el comportamiento del ANSI_NULL con SET)
o utilices ISNULL en las restas :

SELECT A_1, ISNULL(A_2,0) - ISNULL(B_2,0)
FROM A LEFT JOIN B ON ( A_1 = B_1 )

Saludos,
Ulises

Mostrar la cita
encuentro con problemas q
Mostrar la cita
los 2 registros de B
Mostrar la cita
con lo que necesito,
Mostrar la cita
resultado un campo
Mostrar la cita
otra de B, en ese
Mostrar la cita
en B y para el
Mostrar la cita
select o deberé
Mostrar la cita
#4 Ricardo L. Calvo
04/08/2004 - 15:16 | Informe spam
Muchas gracias, como dijo Sócrates y me lo recuerda Carlos :
"Sólo sé que no sé nada. " (pero nada de nada ehh jeje)

"Xavi" escribió en el mensaje
news:
Mostrar la cita
problemas
Mostrar la cita
de
Mostrar la cita
Ads by Google
Search Busqueda sugerida