SQL - Hacerlo simple.

 
Vista:

Hacerlo simple.

Publicado por hubert (98 intervenciones) el 28/01/2008 17:43:36
Buenas grupo,
Por favor, tengo:

TABLA1
campo1, valor1
'01,04,10,08' '10,20,40,30'
para '01' le corresponde el valor de 10, para '04' le corresponde el valor de 20, para '10' le corresponde el valor de 40 ...

Por otra parte tengo otra tabla con lo siguiente.
TABLA2
campo2, valor2
10 111
01 50
08 15
04 80

El campo2 es igual solo al par correspondiente a campo1 (entre la TABLA2 y TABLA1)

Pregunta, se puede hacer de una sola instruccion lo siguiente.

campo2, valor2 (multiplicado)
10 111*40
01 50*10
08 15*30
04 80*20
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Hacerlo simple.

Publicado por lcc (17 intervenciones) el 28/01/2008 20:06:30
tienes que hacer un join entr las dos tablas. p

ej:

select a.Campo1, a.Valor1 * b.Valor2 as Multiplicado
from TABLA1 a, TABLA2 b
where a.Campo1 = b.Campo2

suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hacerlo simple.

Publicado por hubert (98 intervenciones) el 28/01/2008 20:34:44
Bueno.
Tabla1.campo1 es string ej. '01,04.10,08'
Tabla1.valor1 es string '10,15.50,25', creo que primero hay que separarlo por columnas C1 y C2 y luego despues multiplicarlos con la otra tabla.
C1 C2
01 10
04 15
10 50
08 25

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hacerlo simple.

Publicado por stella (16 intervenciones) el 29/01/2008 16:05:39
select substr( t1.campo1, 1, instr(t1.campo1, ',' ,1,1 )-1) t1_campo1,
to_number(substr( t1.campo2, 1, instr(t1.campo2, ',' ,1,1 )-1)) * t2.campo2 valor

from tabla1 t1,
tabla2 t2

where substr( t1.campo1, 1, instr(t1.campo1, ',' ,1,1 )-1) = t2.campo1

union

select substr(t1.campo1, instr(t1.campo1||',', ',',1, i-1)+1, instr(t1.campo1||',', ',',1, i)-instr(t1.campo1||',', ',',1, i-1)-1) t1_campo1,

to_number(substr(t1.campo2, instr(t1.campo2||',', ',',1, i-1)+1,
instr(t1.campo2||',', ',',1, i)-instr(t1.campo2||',', ',',1, i-1)-1))* t2.campo2 valor
from (select rownum i from dual connect by rownum < = 4 ), tabla1 t1, tabla2 t2
where i >= 2
and substr(t1.campo1, instr(t1.campo1||',', ',',1, i-1)+1, instr(t1.campo1||',', ',',1, i)-instr(t1.campo1||',', ',',1, i-1)-1) = t2.campo1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar