FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Obtener dos veces el mismo campo.
Hola a todos:
Tengo una tabla de detalle de facturas con los siguientes campos: Proveedor Fecha Precio Articulo Y deseo obtener el precio minimo y maximo de compra de un determinado artículo X por proveedor: Select Proveedor,max(Precio) as PrecioMaximo,min(Precio) as PrecioMinimo Where Articulo=X group by Proveedor Pero además, quiero saber la fecha en que se compró el artículo X a precio mínimo y la fecha en que se compró a precio máximo. ¿Cómo puedo hacerlo? Un abrazo y gracias por vuestra atención. |
#2
|
||||
|
||||
Es imposible ayudarte sin saber que motor de datos usas...
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
||||
|
||||
puedes usar campos calculados.
tendrias dos campos calculados 'fecha_precio_minimo' y 'fecha_precio_maximo' y la siguiente query: qryFechaPrecio: Código:
select max(fecha) as fecha from tabla where articulo=:articulo and proveedor=:proveedor and precio=:precio en el evento 'onCalcField' escribes: Código:
// fecha en la que se alcanza el precio maximo: qryFechaPrecio.close; qryFechaPrecio.paramByName('articulo').value:=articulo; // variable global qryFechaPrecio.paramByName('proveedor').value:=query['proveedor']; qryFechaPrecio.paramByName('precio').value:=query['precio_maximo']; qryFechaPrecio.open; query['fecha_precio_maximo']:=qryFechaPrecio['fecha']; // fecha en la que se alcanza el precio minimo: qryFechaPrecio.close; qryFechaPrecio.paramByName('articulo').value:=articulo; // variable global qryFechaPrecio.paramByName('proveedor').value:=query['proveedor']; qryFechaPrecio.paramByName('precio').value:=query['precio_minimo']; qryFechaPrecio.open; query['fecha_precio_maximo']:=qryFechaPrecio['fecha']; la desventaja es que aumentas el trafico en la red y disminuyes la velocidad de ejecucion.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda” (Confucio) |
#4
|
|||
|
|||
Haron, la idea de utilizar campos calculados funcionan perfectamente. Además, el volumen da datos no es muy grande e, inicialmente, voy a tener funcionando la aplicación en en sólo equipo.
El único inconveniente que encuentro es no poder ordenar por los campos calculado... ¿o si se puede?. Un abrazo y gracias. |
#5
|
||||
|
||||
Cita:
hace tiempo puse la misma pregunta en el foro, que si se puede ordenar por campos calculados. me dijeron que no. una solucion que se me ocurre, si necesitas ordenar por campos calculados y el volumen de datos no es muy grande, es olvidarte del TDBGrid y usar un TStringGrid para ordenar el resultado por cualquier campo. la verdad que es una lastima que no se pueda. el componente TQuery deberia tener alguna opcion para hacerlo, ya que al fin y al cabo trabaja con una copia local y puede ordenar los resultados de esa copia.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda” (Confucio) |
#6
|
||||
|
||||
Si vas a trabajar solamente local, una solución muy simple sería tener una tabla con los campos necesarios vacia y cuando actives la consulta, haces un insert sobre esta tabla que tendrá los índices que necesites, luego solamente te queda ordenar por el campo que quieras.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#7
|
||||
|
||||
Movido por la curiosidad he hecho la siguiente prueba con Paradox:
Código:
Select Nombre, apellidos, apellidos||nombre as apel From alumnos order by 3 //o esta otra Select Nombre, apellidos, apellidos||nombre as apel From alumnos order by apel Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
|
|