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

Consulta para ordenar registros que al sumarlos den 0

Estas en el tema de Consulta para ordenar registros que al sumarlos den 0 en el foro de SQL Server en Foros del Web. Hola, necesito ayuda. Tengo una consulta a una tabla con 405,168 registros, son cuentas contables y necesito que se orden de tal forma que el ...
  #1 (permalink)  
Antiguo 18/12/2014, 21:27
 
Fecha de Ingreso: diciembre-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta Consulta para ordenar registros que al sumarlos den 0

Hola, necesito ayuda. Tengo una consulta a una tabla con 405,168 registros, son cuentas contables y necesito que se orden de tal forma que el registro posterior sea el que tenga el mismo monto, pero diferente signo, del registro que lo antecede.

Por ejemplo:

Registro 1 ... -1250.00
Registro 2 ... 1250.00
Registro 3 ... - 345.00
Registro 4 .... 345.00

Se me ocurrió el siguiente query, el cual funcionaba con pocos registros de prueba. El problema es que hay muchos registros que coinciden con el campo cuenta y centro y se hace un cross join, haciendo una consulta que no termina nunca.
¿Qué otra alternativa puedo tomar para obtener los registros en ese orden? Tomando en cuenta que puedo llegar a tener muchos más registros.

Gracias de antemano. Saludos!
Código SQL:
Ver original
  1. SELECT fi.[ID],
  2.             fi.[ENTITY],
  3.             fi.[JOURNALID],
  4.             fi.[CODRECON],
  5.             fi.[ACCOUNT],
  6.             fi.[SITE],
  7.             fi.[CURRENCY],
  8.             fi.[SIGN],
  9.             fi.[AMOUNT],
  10.             fi.[EFECTIVEDATE],
  11.             fi.[PUBLICATIONDATE],
  12.             fi.[PROJECT],
  13.             fi.[DESCRIPTION],
  14.             fi.[IDENTIFIER]
  15.            
  16.       FROM [vwItems] AS fi
  17. INNER JOIN [vwItems] AS ft
  18.         ON fi.[ACCOUNT] = ft.[ACCOUNT]
  19.        AND fi.[SITE] = ft.[SITE]
  20.   GROUP BY  fi.[ID],
  21.             fi.[ENTITY],
  22.             fi.[JOURNALID],
  23.             fi.[CODRECON],
  24.             fi.[ACCOUNT],
  25.             fi.[SITE],
  26.             fi.[CURRENCY],
  27.             fi.[SIGN],
  28.             fi.[AMOUNT],
  29.             ft.[AMOUNT],
  30.             fi.[EFECTIVEDATE],
  31.             fi.[PUBLICATIONDATE],
  32.             fi.[PROJECT],
  33.             fi.[DESCRIPTION],
  34.             fi.[IDENTIFIER]
  35.     HAVING (fi.[AMOUNT] + ft.[AMOUNT]) = 0

Última edición por gnzsoloyo; 19/12/2014 a las 06:53
  #2 (permalink)  
Antiguo 19/12/2014, 11:26
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, 2 meses
Puntos: 774
Respuesta: Consulta para ordenar registros que al sumarlos den 0

con los datos que presentas y la logica que sugieres se puede hacer algo asi:

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. dato INT
  3. )
  4.  
  5.  
  6. INSERT INTO #temp VALUES (-1250.00)
  7. INSERT INTO #temp VALUES (1250.00)
  8. INSERT INTO #temp VALUES (-345.00)
  9. INSERT INTO #temp VALUES (345.00)
  10. INSERT INTO #temp VALUES (100.00)
  11. INSERT INTO #temp VALUES (-100.00)
  12.  
  13.  
  14.  
  15.  
  16. SELECT ROW_NUMBER() OVER(partition BY nuevo ORDER BY original ASC) AS rn, original, nuevo FROM(
  17. SELECT dato AS original,
  18. CASE WHEN dato<0 THEN dato*-1 ELSE dato END AS nuevo FROM #temp
  19. ) AS t1

si eso no suluciona tu cuestion por favor da mas datos.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: contabilidad, cuentas, join, sql, sql-sentencia
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 00:59.