Oracle - Convertir en letras definidas

   
Vista:

Convertir en letras definidas

Publicado por Byron (12 intervenciones) el 22/05/2014 18:12:48
Buenos días espero que me puedan ayudar necesito sacar desde mi sistema, hecho en forms 6i y reports 6i, y con base de datos oracle 11g, un reporte que me genere etiquetas de los productos ingresados el query es este:

1
2
3
4
5
6
7
8
9
10
11
12
select b.codigo_rep_id,a.estado,a.proveedor_id,a.numdocxp,b.secuencia_doc,
b.ubicacion,b.cantidad,b.total,
decode(b.total,1,'C',2,'H',3,'E',4,'V',5,'Y',6,'F',7,'A',8,'M',9,'O',0,'S')TOTAL
from rep_movimientoscab a,rep_movimientosdet b
where a.empresa_id    = b.empresa_id
and a.sucursal_id     = b.sucursal_id
and a.bodega_id       = b.bodega_id
and a.aniofis_id      = b.aniofis_id
and a.periodorep_id   = b.periodorep_id
and a.tipomovirep_id  = b.tipomovirep_id
and a.secuencia_doc   = b.secuencia_doc
and a.secuencia_doc     = '4187'

Pero necesito que en lugar del valor total del producto, me salga una equivalencia a letras de la siguiente manera
1
2
C	H	E	V	Y	F	A	M	O	S
1	2	3	4	5	6	7	8	9	0

Es decir que si el producto cuesta 871.34 en lugar de los numero necesito que me salga MACev no se si hay alguna manera de convertir números a letras de esta forma.

Y poder mandar a imprimir el numero de etiquetas de acuerdo a la cantidad de productos que llegaron
por ejemplo si en la factura 49890 vinieron 2 productos de esta forma

1
2
3
factura        Código             Cantidad   
     49890      ISD117U           4
     49890      ISD109US          2

mandar a imprimir 4 etiquetas de ISD117U y solo 2 de ISD109US

Espero que me puedan ayudar para ver si es posible hacerlo desde reports o me den alguna guia para lograrlo
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

Convertir en letras definidas

Publicado por Rafael rafael@reef-life.com.mx (177 intervenciones) el 03/06/2014 21:36:39
La funcion DECODE no te servira deberia poner algo asi:

1
2
3
4
5
select b.codigo_rep_id,a.estado,a.proveedor_id,a.numdocxp,b.secuencia_doc, b.ubicacion,b.cantidad,b.total,
 
REPLACE(REPLACE(REPLACE(b.total,'1','C'),' '2, 'H') , '3', 'E')
 
from rep_movimientoscab a,rep_movimientosdet b where a.empresa_id = b.empresa_id and a.sucursal_id = b.sucursal_id and a.bodega_id = b.bodega_id and a.aniofis_id = b.aniofis_id and a.periodorep_id = b.periodorep_id and a.tipomovirep_id = b.tipomovirep_id and a.secuencia_doc = b.secuencia_doc and a.secuencia_doc = '4187'

Suponiendo que b.total fuese char o varchar y anidar tantos replace como letras quieras modificar...

En caso de ser un numero

1
REPLACE(REPLACE(REPLACE(TO_CHAR(b.total),'1','C'),' '2, 'H') , '3', 'E')

Nos cuentas como te fue ??
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