SQL Excel Split con espacio adelante

Tengo en un Excel información, la cual traigo a SQL mediante la siguiente query:
SELECT *
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                    'Excel 8.0;Database=E:\Prueba SQL\Prueba.xls;HDR=YES',
                    'SELECT * FROM [Prueba$]')
Ahora, una columna contiene el Lote y Sublote de un producto, por ejemplo: 'A548 22'
En donde A548 es el Lote y 22 el Sublote. El problema es que a veces el Sublote es distinto pero se debe realizar la sumatoria de todos los registros del mismo Lote. Pero a veces el Lote viene con un espacio adelante, el cual esta bien ingreaso, por lo que no puedo realizar las típicas funciones Split que he encontrado, porque me eliminarían el espacio de adelante y el ' 22'
Un ejemplo de lo que digo es este: ' 870093/1 11'.
Como verán, adelante hay un espacio, y lo que necesito yo es solamente ' 870093/1' es decir el espacio y los numero y letras de la primera parte. A partir del segundo espacio no me interesa.
Si hubiese una forma de realizarlo, estaría realmente agradecido en saberlo.

1 Respuesta

Respuesta
1
Lo que puedes hacer, es buscar la posición del primer espacio en blanco de dicho campo, después extraer desde la posición 1 a hasta la posición donde se encuentra el espacio en blanco, seria algo así:
SELECT *, LOTE=SUBSTRING(campoLoteSublote,1,PATINDEX('% %',campoLoteSublote)-1)
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                    'Excel 8.0;Database=E:\Prueba SQL\Prueba.xls;HDR=YES',
                    'SELECT * FROM [Prueba$]')
El ejemplo de arriba va a funcionar siempre y cuando exista algún espacio vacío, de lo contrario generara un error.
Bueno, muchas gracias. De todos modos ya lo había logrado hacer. Era urgente y tenia que hacerlo como me fuese posible. Aquí les dejo la manera, para los que buscan algo simple:
SELECT Producto, left(Lote, charindex(' ', Lote, 2), Cantidad
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                    'Excel 8.0;Database=E:\Prueba SQL\Prueba.xls;HDR=YES',
                    'SELECT * FROM [Prueba$]')
Lo que hace ahí es hacer un LEFT hasta la posición en la que encuentra el primer espacio, empezando a contar desde el segundo carácter.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas