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

Divisiones entre 2 filas

Estas en el tema de Divisiones entre 2 filas en el foro de SQL Server en Foros del Web. Saludos. Tengo esta tabla: Y quiero obtener las divisiones de cada columna. Como le hago para obtener el resultado de la 3a fila? Hago un ...
  #1 (permalink)  
Antiguo 27/10/2016, 13:00
Avatar de CompuDoc  
Fecha de Ingreso: febrero-2011
Mensajes: 41
Antigüedad: 13 años, 9 meses
Puntos: 3
Divisiones entre 2 filas

Saludos.
Tengo esta tabla:



Y quiero obtener las divisiones de cada columna.



Como le hago para obtener el resultado de la 3a fila?


Hago un loop en la tabla y luego un insert ?

Gracias.
  #2 (permalink)  
Antiguo 27/10/2016, 13:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Divisiones entre 2 filas

Cual es la formula o forma de obtener el 3 resultado?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 27/10/2016, 14:20
Avatar de CompuDoc  
Fecha de Ingreso: febrero-2011
Mensajes: 41
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Divisiones entre 2 filas

Utilidad Neta / Ventas Netas para cada columna.

como se dice "el de arriba entre el de abajo", siempre habra alguna valor.
  #4 (permalink)  
Antiguo 27/10/2016, 14:35
Avatar de CompuDoc  
Fecha de Ingreso: febrero-2011
Mensajes: 41
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Divisiones entre 2 filas

Ok, ya encontre como hacer la division.

El truco esta en hacer una copia de la tabla y al hacer el JOIN restarle un 1 al IDTipo.



ahora falta como insertarlo debajo de la fila 2.
Voy a intentar con un INTO haber si me deja.

Última edición por CompuDoc; 27/10/2016 a las 14:36 Razón: Datos adicionales.
  #5 (permalink)  
Antiguo 27/10/2016, 14:55
Avatar de CompuDoc  
Fecha de Ingreso: febrero-2011
Mensajes: 41
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Divisiones entre 2 filas

Listo, ya quedo.
Les paso la informacion.



Saludos
  #6 (permalink)  
Antiguo 27/10/2016, 16:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Divisiones entre 2 filas

Demasiado codigo ;)


Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id_tipo INT,
  4. nombreindicador VARCHAR(20),
  5. col1 DECIMAL(16,10),
  6. col2 DECIMAL(16,10)
  7. )
  8.  
  9.  
  10. INSERT INTO #temp VALUES (1,'Utilidad neta',8593.00,27560.00)
  11. INSERT INTO #temp VALUES (2,'Ventas neta',98895.00,233136.00)
  12.  
  13.  
  14. SELECT * FROM #temp
  15. UNION
  16. SELECT 3 AS id_tipo, 'Total' AS nombre_indicador, t1.col1/t2.col1 AS col1, t1.col2/t2.col2 AS col2 FROM #temp AS t1
  17. LEFT JOIN #temp AS t2 ON (t1.id_tipo+1=t2.id_tipo)
  18. WHERE t2.col1 IS NOT NULL

Resultado:
id_tipo nombreindicador col1 col2
1 Utilidad neta 8593.0000000000000000000000 27560.0000000000000000000000
2 Ventas neta 98895.0000000000000000000000 233136.0000000000000000000000
3 Total 0.0868901360028312857070 0.1182142612037608949282
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 27/10/2016, 21:26
Avatar de CompuDoc  
Fecha de Ingreso: febrero-2011
Mensajes: 41
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Divisiones entre 2 filas

Si, saludos, basicamente lo mismo pero mas barato :)

Gracias por la info.
  #8 (permalink)  
Antiguo 17/01/2017, 13:15
 
Fecha de Ingreso: febrero-2016
Mensajes: 48
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Divisiones entre 2 filas

Cita:
Iniciado por Libras Ver Mensaje
Demasiado codigo ;)


Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id_tipo INT,
  4. nombreindicador VARCHAR(20),
  5. col1 DECIMAL(16,10),
  6. col2 DECIMAL(16,10)
  7. )
  8.  
  9.  
  10. INSERT INTO #temp VALUES (1,'Utilidad neta',8593.00,27560.00)
  11. INSERT INTO #temp VALUES (2,'Ventas neta',98895.00,233136.00)
  12.  
  13.  
  14. SELECT * FROM #temp
  15. UNION
  16. SELECT 3 AS id_tipo, 'Total' AS nombre_indicador, t1.col1/t2.col1 AS col1, t1.col2/t2.col2 AS col2 FROM #temp AS t1
  17. LEFT JOIN #temp AS t2 ON (t1.id_tipo+1=t2.id_tipo)
  18. WHERE t2.col1 IS NOT NULL

Resultado:
id_tipo nombreindicador col1 col2
1 Utilidad neta 8593.0000000000000000000000 27560.0000000000000000000000
2 Ventas neta 98895.0000000000000000000000 233136.0000000000000000000000
3 Total 0.0868901360028312857070 0.1182142612037608949282
Como puedo generar la tabla temporal, de modo que el id aumente automáticamente al ingresarle campos de otra tabla del sistema?

algo asi como:

insert into #temp values (id, campoA, campoB)
select (i, valorA, valorB)
from Tabla
set i=i+1
  #9 (permalink)  
Antiguo 17/01/2017, 13:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Divisiones entre 2 filas

Asi
Código SQL:
Ver original
  1. SELECT i, valorA, valorB, IDENTITY(INT,1,1) AS rn INTO #temp
  2. FROM Tabla

ojo, para este caso no tienes que tener declarada la tabla #temp
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: filas
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 11:31.