Unión condicional

22/07/2004 - 20:28 por Liliana Sorrentino | Informe spam
Hola a todos,

Necesito unir el resultado de varios select, pero la consulta a una de las
tablas está condicionada por el valor de un parámetro y no encuentro la
forma sin tener que caer en un query dinámico.
El caso MUUUUUY simplificado es:

SELECT t1.año, deuda_origen = t1.deuda, deuda_actual = t1.deuda *
ind.coeficiente
FROM t1 INNER JOIN ind ON t1.año = ind.año
UNION
SELECT t2.año, deuda_origen = t2.deuda, deuda_actual = t2.deuda *
ind.coeficiente
FROM t2 INNER JOIN ind ON t2.año = ind.año
UNION
IF @parametro < valor
SELECT t3.año, deuda_origen = t3.deuda, deuda_actual = t3.deuda *
ind.coeficiente
FROM t3 INNER JOIN ind ON t3.año = ind.año
ELSE
SELECT t3.año, deuda_origen = t3.deuda, deuda_actual = t3.deuda *
otroind.coeficiente
FROM t3 INNER JOIN otroind ON t3.año = otro.año

Les agradezco cualquier sugerencia,
Liliana.
 

Leer las respuestas

#1 ulises
22/07/2004 - 20:43 | Informe spam
Hola Liliana,

Creo que podrias reemplazar el IF con un JOIN entre ind y
otroind, algo como :

SELECT t3.año,
deuda_origen = t3.deuda,
deuda_actual = t3.deuda * i.indicador
FROM t3
INNER
JOIN
( SELECT ind.año,
( CASE WHEN @parametro < @valor
THEN ind.coeficiente
ELSE otroind.coeficiente
END ) as indicador
FROM ind JOIN otroind ON ind.año = otroind.año ) i
ON t3.año = i.año

Saludos,
Ulises

Hola a todos,

Necesito unir el resultado de varios select, pero la


consulta a una de las
tablas está condicionada por el valor de un parámetro y


no encuentro la
forma sin tener que caer en un query dinámico.
El caso MUUUUUY simplificado es:

SELECT t1.año, deuda_origen = t1.deuda, deuda_actual =


t1.deuda *
ind.coeficiente
FROM t1 INNER JOIN ind ON t1.año = ind.año
UNION
SELECT t2.año, deuda_origen = t2.deuda, deuda_actual =


t2.deuda *
ind.coeficiente
FROM t2 INNER JOIN ind ON t2.año = ind.año
UNION


descriptivo
IF @parametro < valor
SELECT t3.año, deuda_origen = t3.deuda, deuda_actual =


t3.deuda *
ind.coeficiente
FROM t3 INNER JOIN ind ON t3.año = ind.año
ELSE
SELECT t3.año, deuda_origen = t3.deuda, deuda_actual =


t3.deuda *
otroind.coeficiente
FROM t3 INNER JOIN otroind ON t3.año = otro.año

Les agradezco cualquier sugerencia,
Liliana.



.

Preguntas similares