Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Id para tabla temporal

Estas en el tema de Id para tabla temporal en el foro de SQL Server en Foros del Web. Hola, Necesito generar una tabla temporal desde una función en donde se guarda ciertos registros de una función con valores de tabla, junto con un ...
  #1 (permalink)  
Antiguo 17/01/2017, 15:35
 
Fecha de Ingreso: febrero-2016
Mensajes: 48
Antigüedad: 8 años, 2 meses
Puntos: 0
Id para tabla temporal

Hola,
Necesito generar una tabla temporal desde una función en donde se guarda ciertos registros de una función con valores de tabla, junto con un id, pero tengo dudas de como generar el id y que no se repita.

Seria algo así

DECLARE @Tabla_Temp TABLE(ID numeric(25),Plazo numeric(25,10),Libo numeric(25,10))
declare @Row numeric(25,10)

set @Row = 1

insert into @Tabla_TempID(id)
values @Row
set @Row=@Row+1



pero envía error con lo de "set @Row=@Row+1"
  #2 (permalink)  
Antiguo 17/01/2017, 15:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Id para tabla temporal

Haz identity el campo

Código SQL:
Ver original
  1. DECLARE @Tabla_Temp TABLE(ID NUMERIC(25) IDENTITY(1,1) ,Plazo NUMERIC(25,10),Libo NUMERIC(25,10))

Y que es lo que estas tratando de hacer???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 17/01/2017, 18:11
 
Fecha de Ingreso: febrero-2016
Mensajes: 48
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Id para tabla temporal

Cita:
Iniciado por Libras Ver Mensaje
Haz identity el campo

Código SQL:
Ver original
  1. DECLARE @Tabla_Temp TABLE(ID NUMERIC(25) IDENTITY(1,1) ,Plazo NUMERIC(25,10),Libo NUMERIC(25,10))

Y que es lo que estas tratando de hacer???
Intento simular el row_number, ya que la version de la base de datos no la acepta.
  #4 (permalink)  
Antiguo 18/01/2017, 07:27
 
Fecha de Ingreso: febrero-2016
Mensajes: 48
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Id para tabla temporal

Realice esto, funciona, pero el problema yace en que en la instrucción para contar datos

Código:
set @Cant_Datos = (SELECT count(*) FROM [dbo].FN_Tasas(@Fecha,@Numero))
registra correctamente la cantidad de datos de la función (32 datos), pero al ejecutar el while, entrega 1024 registros y no entiendo que esta mal

Código:
set @Row = 1
set @Cant_Datos = (SELECT count(*) FROM [dbo].FN_Tasas(@Fecha,@Numero))

	while @Row <= @Cant_Datos
		begin
			insert into @Tabla_TempActual(rn ,Plazo , Libo )
			select @Row,Plazo,Libo
			FROM [dbo].FN_Tasas(@Fecha,@Numero)
			set @Row=@Row+1
		end
  #5 (permalink)  
Antiguo 18/01/2017, 08:17
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Id para tabla temporal

Hay varios threads en internet acerca de como simular row_number en sql 2000

http://stackoverflow.com/questions/4...ql-server-2000

Ahora el porque de los 1024 registros, sencillo, tu funcion regresa 32 registros, estas ejecutando el while 32 veces 32*32=1024, lo que pasa es que en la funcion no tienes un discriminativo, por lo que cada vez que ejecuta la funcion regresa los 32 registros, y en tu insert tienes que inserte todo lo que regresa la funcion.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: tabla, temporal
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:41.