Consulta

15/05/2008 - 19:46 por Angel g. | Informe spam
Hola,

Tengo una tabla:

TablaA (Expediente nvarchar(12), Obra nvarchar(9))

y dos vistas:

Vista1 (Expediente nvarchar(12), Total money)
Vista2 (Obra nvarchar(9), Total money)

Quisiera hacer una consulta que devolviera:

Expediente, Obra, Total (tendrá tantos registros como tenga TablaA)

pero con la condición de:

- Si existe algun registro en Vista1 cuyo expediente coincida con expediente
de TablaA, Total debe ser el de Vista1
- En caso contrario, Total debe ser el devuelto por Vista2

Supongo que deberia utilizar CASE en el momento de hacer los joins... pero
no doy con ello.

Grácias.
 

Leer las respuestas

#1 Alejandro Mesa
15/05/2008 - 20:53 | Informe spam
Trata:

- Si existe algun registro en Vista1 cuyo expediente coincida con expediente
de TablaA, Total debe ser el de Vista1
- En caso contrario, Total debe ser el devuelto por Vista2



select
t1.Expediente,
t1.Obra,
coalesce(v1.Total, v2.Total) as Total
from
v1
right outer join
t1
on v1.Expediente = t1.Expediente
left outer join
v2
on v2.Obra = t1.Obra
GO


AMB

"Angel g." wrote:

Hola,

Tengo una tabla:

TablaA (Expediente nvarchar(12), Obra nvarchar(9))

y dos vistas:

Vista1 (Expediente nvarchar(12), Total money)
Vista2 (Obra nvarchar(9), Total money)

Quisiera hacer una consulta que devolviera:

Expediente, Obra, Total (tendrá tantos registros como tenga TablaA)

pero con la condición de:

- Si existe algun registro en Vista1 cuyo expediente coincida con expediente
de TablaA, Total debe ser el de Vista1
- En caso contrario, Total debe ser el devuelto por Vista2

Supongo que deberia utilizar CASE en el momento de hacer los joins... pero
no doy con ello.

Grácias.



Preguntas similares