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 originalSELECT fi.[ID],
fi.[ENTITY],
fi.[JOURNALID],
fi.[CODRECON],
fi.[ACCOUNT],
fi.[SITE],
fi.[CURRENCY],
fi.[SIGN],
fi.[AMOUNT],
fi.[EFECTIVEDATE],
fi.[PUBLICATIONDATE],
fi.[PROJECT],
fi.[DESCRIPTION],
fi.[IDENTIFIER]
FROM [vwItems] AS fi
INNER JOIN [vwItems] AS ft
ON fi.[ACCOUNT] = ft.[ACCOUNT]
AND fi.[SITE] = ft.[SITE]
GROUP BY fi.[ID],
fi.[ENTITY],
fi.[JOURNALID],
fi.[CODRECON],
fi.[ACCOUNT],
fi.[SITE],
fi.[CURRENCY],
fi.[SIGN],
fi.[AMOUNT],
ft.[AMOUNT],
fi.[EFECTIVEDATE],
fi.[PUBLICATIONDATE],
fi.[PROJECT],
fi.[DESCRIPTION],
fi.[IDENTIFIER]
HAVING (fi.[AMOUNT] + ft.[AMOUNT]) = 0