SQL - Procedimiento Contador

 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Agustin (5 intervenciones) el 06/01/2020 20:48:05
Buenas tardes. tengo la siguiente parte de un proceso almacenado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT @envio=replicate('0',8-LEN(CAST(@numEnvio AS VARCHAR))) + CAST(@numEnvio AS VARCHAR)
 
 
INSERT INTO #BancoCrediccop
SELECT 2 id, 'R' + @envio +
       replicate('0',11-len(CAST(ID AS VARCHAR))) + CAST(ID AS VARCHAR) +
       CAST(ltrim(rtrim(FIRMA)) AS VARCHAR(50)) + replicate(' ',50-len(CAST(ltrim(rtrim(FIRMA)) AS VARCHAR(50)))) +
       '0000000000000' +
       replicate('0',11-len( replace(ltrim(rtrim(CUIT)),'-',''))) +  replace(ltrim(rtrim(CUIT)),'-','') +
       replicate(' ',207) +
       '00001311' +
       'A'
 
FROM Clientes
WHERE DISCONTINUADO NOT IN ('D','S')

el resultado es el siguiente:

Sin-titulo

yo necesito que el numero 2 (en este caso es la variable envio) sea incremental y no lo puedo lograr.
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

Procedimiento Contador

Publicado por Cristian (6 intervenciones) el 06/01/2020 21:41:56
Puedes usar el ciclo WHILE para que se vaya incrementando
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Agustin (5 intervenciones) el 06/01/2020 22:19:09
donde lo pongo al while dentro del select?
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
Imágen de perfil de Isaias
Val: 1.988
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Isaias (1462 intervenciones) el 06/01/2020 22:24:03
Hola

¿En que motor de base de datos esta trabajando?

Si fuera SQL Server, podria utilizar la instruccion row_number() over( )
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Agustin (5 intervenciones) el 06/01/2020 22:43:13
Hola. si, es sql server, como agregaría esa instrucción allí?
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
Imágen de perfil de Vega
Val: 202
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Vega (62 intervenciones) el 06/01/2020 23:33:49
Hola,

pon la función row_number() over(order by ID asc) donde tienes "Select 2 id, …"

también creo que podrías ahorrarte un montón de código si trataras todo como una suma de números sumados. Es decir

100000000000000000000
+ 200000000000 (multiplica el row_number() por un multiplicador para mover la posición)
+ 12
====================
100000000200000000012

Luego un 'R'+LEFT(cast(100000000200000000012 as char(21)),20)
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Agustin (5 intervenciones) el 07/01/2020 11:12:41
Hola. Buen día. pongo la variable allí, pero no se como se utiliza select 2 id, row_number(@envio) over(order by ID asc)

pruebo y me da error...
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
Imágen de perfil de joel
Val: 50
Ha aumentado su posición en 7 puestos en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por joel (17 intervenciones) el 07/01/2020 14:29:41
Hola Agustin, que error te da?
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
Imágen de perfil de Vega
Val: 202
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Vega (62 intervenciones) el 07/01/2020 17:22:20
¿que tipo de dato es el número 2 (id), es un varchar o un int?

si estás usando la variable dentro de la cadena, no creo que te haga falta el row_number().
por cierto row_number() no necesita argumentos.

por ejemplo:
1
select @envio as id, row_number() over(order by ID asc)
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Agustin (5 intervenciones) el 07/01/2020 21:51:51
Buenas... yo necesito aumetar cada fila un numero, ese numero que debo aumentar corresponde a la variable @envio, por lo tanto no hace falta el row_number() over(order by ID asc).


lo que no se como hacer es que la variable @envio sea incremental en cada fila dentro de ese select en donde está.

Por cierto es varchar la variable y tiene que ser así, es un pedido, y tiene pautas como esa.
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
Imágen de perfil de Vega
Val: 202
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Procedimiento Contador

Publicado por Vega (62 intervenciones) el 08/01/2020 09:58:21
¿podrias poner un ejemplo con datos de la tabla clientes?
con dos clientes y el resultado que esperas ver bastaría.

eh intentado algo a ver si te funciona,

1
2
3
4
5
6
7
SELECT	'R' + RTRIM(RIGHT(CAST(SEG1 AS CHAR(9)),8))+RTRIM(RIGHT(CAST(SEG2 AS CHAR(14)),13))
FROM (
		SELECT  SEG1 = 10000000 + ROW_NUMBER() OVER(ORDER BY ID ASC)
		,		SEG2 = 1000000000000 + ID
		FROM clientes
WHERE DISCONTINUADO NOT IN ('D','S')
) X
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