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:#
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




Respuesta Responder a este mensaje
#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:%
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




Respuesta Responder a este mensaje
#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

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




.

Respuesta Responder a este mensaje
#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:
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:%
> 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
>
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida