Pregunta: | 28718 - ORDERNAR CONSULTA SOBRE UN CAMPO CALCULADO |
Autor: | Jordi Adell |
Hola !
Tengo un problema con una consulta SQL. No se como ordernar una consulta sobre un campo calculado que es la suma de 2 consultas. He probado con ORDER BY "la suma de las 2 consultas" (Error) He probado con asignando un alias sobre el campo y luego ORDER BY Alias (Solicita valor para Alias o genera Error) LA estructura es SELECT Campo1, (consulta1 + consulta2) As Vtas FROM .... La Consulta1 selecciona las Facturas año 99 y la Consulta2 selecciona las Facturas año 00. El Recordset que se obtiene tiene 2 columnas: Num CLIENTE - VTAS ------------------------- 1 300 2 400 3 200 ... Lo que me interesa es saber como puedo ordenar la columna VTAS ya que se obtiene a partir de la suma de 2 consultas. Aqui va el SQL (Reducido) SELECT TOP 10 CliCod, (SELECT Sum(Importe) FROM Fac99 WHERE FacCli = CliCod) + (SELECT Sum(Importe) FROM Fac00 WHERE FacCli = CliCod) AS VTAS FROM CLIENTES ORDER BY VTAS Con este codigo no Ordena Nada... :( Gracias |
Respuesta: | Xime Tamame |
Jordi lo que tenes que usar es la instruccion JOIN para unir todas las tablas, aqui va:
SELECT TOP 10 c.CliCod, Sum( f99.Importe ) + Sum( f00.Importe ) FROM ( CLIENTES as C LEFT JOIN Fac99 as F99 ON ( c.CliCod = F99.CliClod )) LEFT JOIN Fac00 as F00 ON ( c.CliCod = F00.CliClod ) GROUP BY c.CliCod ORDER BY Sum( f99.Importe ) + Sum( f00.Importe ) Y ahora si te va a ordenar ya que los campos son parte de la consulta y no una subconsulta como lo que tenes vos. NO te olvides de poner la instruccion Group by, suerte!!! |