Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema Con Un Query (https://www.clubdelphi.com/foros/showthread.php?t=22274)

Ing Harry 10-06-2005 15:32:34

Problema Con Un Query
 
SALUDOS..

Me encuentro realizando el siguiente qry en Mysql

select c.cod_prov,d.descripcion,format((sum(case a.cod_movi when '1' then a.valor else 0 end)),2)"Venta Neta",
format((sum(case a.cod_movi when '2' then a.valor else 0 end)),2)"Devoluciones",
format((sum(case a.cod_movi when '1' then a.valor when'2' then a.valor*-1 else 0 end)),2)as total
from tbl_venta as a,tbl_artic as b,tbl_prov as c,tbl_nit as d
where a.cod_artic=b.cod_artic and b.cod_prov=c.cod_prov and c.nit=d.nit
and a.fecha between '2005-05-01' and '2005-05-31'
group by c.cod_prov,d.descripcion
order by total;

El resultado del mismo es el esperado, pero la funcion order by no me esta ordenando los datos. No se que esta pasando, si alguien sabe como puedo hacer para que el ordenamiento funcione se lo agradeceria enormemente.

Gracias por la atencion :cool: :cool:

Lepe 10-06-2005 16:18:41

No sé si es una barbaridad, pero creo haber leido por los foros que tienes que usar:
Código SQL [-]
order by (sum(case a.cod_movi when '1' then a.valor when'2' then a.valor*-1 else 0 end)

Suerte

Ing Harry 10-06-2005 16:57:14

Saludos

Gracias por tus comentarios, pero tu sugerencia no funciona, agradezco tu colaboracion y quedo a la espera de mas comentarios.

lgarcia 10-06-2005 20:17:17

P
 
Hola:

Me parece que en la sentencia que utilizas para el Order by debes incluir el format, o sea

format((sum(case a.cod_movi when '1' then a.valor when'2' then a.valor*-1 else 0 end)),2)

Espero te sirva

Saludos
Luis Garcia

maeyanes 10-06-2005 20:49:32

Yo en Interbase he usado:
Código SQL [-]
select Campo1, Cast(Campo2, Integer) from Tabla
order by 2
Ahí le estoy indicando la columna que quiero que use para ordenar de acuerdo a su número. Lo que no se si esto solo sirva en Interbase.

Pruebalo a ver si te sirve.


Saludos...

Ing Harry 11-06-2005 00:25:27

Nada, no funciona, las cosas siguen iguales, habra que seguir investigando, pero creo que esto esta demasiado misterioso no creen. Me doy cuenta que muchos han visto este hilo asi que les agradezco me colaboren para adquirir este conocimiento al parecer el problema esta dado por el uso del case.

Gracias estamos en contacto

jachguate 11-06-2005 01:23:53

En este momento no logro recordar si mysql soporta lo que voy a sugerirte.. pero quien quita y funcione.

Código SQL [-]
  Select q1.cod_prov, q1.Total
    from (select c.cod_prov,
                 sum(case a.cod_movi when '1' then a.valor when'2' then a.valor*-1 else 0 end) total
            from tbl_venta a, /* etcetera */
         ) q1
   order by q1.Total;

En la jerga de oracle, esto se llama inline views... no se cómo se llama en otras jergas.. :D

Hasta luego.

;)

vtdeleon 11-06-2005 03:24:37

Saludos

No se mucho de sentencias SQl pero
Código SQL [-]
...when'2'
when y '2'
estan pegados. FUnciona asi?

jachguate 11-06-2005 03:53:06

Bueno, eso depende del tokenizer del motor de la base de datos, pero yo diría que debe funcionar. En todo caso, yo lo copié del mensaje original de Harry.. :D

Ing Harry 14-06-2005 00:51:26

Saludos..


Bueno les cuento que ya pude corregir el problema. A decir verdad el causante del inconveniente fue la funcion format, pues deje de usarla y el ordenamiento quedo ok. Como este query lo estaba usando para poder generar un reporte, lo que hice fue dejarle el formateo del mismo al quickreport.

De todas maneras queda la duda al momento de usar el format, pues no nos permite ordenar. Agradezco la atencion prestada y los comentarios recibidos, todos fueron muy utiles.


Atentamente
ING HARRY :D :D :D


La franja horaria es GMT +2. Ahora son las 06:15:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi