Obtener fila del almacen con precio más bajo para cada artículo.

17/05/2007 - 17:30 por Salvador Ramos | Informe spam
Hola a todos,

Tengo la siguiente tabla de artículos: almacen, articulo, descripcion,
precio, proveedor, ...
La PK es almacen+articulo
Hay una serie de almacenes, de los cuales sólo quiero la comparativa entre
el 1, 3, 5, 6 y 11.

Con la siguiente consulta obtengo las filas deseadas:
select articulo, min(precio) as PrMinimo
from avlArtic
where almacen in(1, 3, 5, 6, 11)
group by articulo

Ahora el problema es que no quiero mostrar sólo el artículo y precio mínimo,
sino que quiero mostrar todas las columnas de la tabla articulos. Si no, no
puedo saber en qué almacen es más barato ni otros datos de esa fila.

Como puedo obtener, por cada artículo, la fila correspondiente al almacen
que tiene el precio más bajo entre los seleccionados ?

Un saludo
Salvador Ramos

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm
 

Leer las respuestas

#1 Norman A. Armas
17/05/2007 - 18:25 | Informe spam
Hola Salvador, cuanto tiempo :-)
Te lo hace un poco dificil el que no tengas por ejemplo un identity en la
columna o un uniqueidentiquier pero mas o menos seria asi la idea

select distinct
a1.articulo,a1.descripcion,
(
select top 1
a2.precio
from
avlArtic as a2
where
a2.almacen in(1, 3, 5, 6, 11)
order by
a2.precio desc
) as myprecio,
(
select top 1
a3.precio
from
avlArtic as a3
where
a3.almacen in(1, 3, 5, 6, 11)
order by
a3precio desc
) as myproveedor,
from
avlArtic as a1
where
a1.almacen in(1, 3, 5, 6, 11)
order by
a1.articulo




"Salvador Ramos" wrote in message
news:
Hola a todos,

Tengo la siguiente tabla de artículos: almacen, articulo, descripcion,
precio, proveedor, ...
La PK es almacen+articulo
Hay una serie de almacenes, de los cuales sólo quiero la comparativa entre
el 1, 3, 5, 6 y 11.

Con la siguiente consulta obtengo las filas deseadas:
select articulo, min(precio) as PrMinimo
from avlArtic
where almacen in(1, 3, 5, 6, 11)
group by articulo

Ahora el problema es que no quiero mostrar sólo el artículo y precio
mínimo, sino que quiero mostrar todas las columnas de la tabla articulos.
Si no, no puedo saber en qué almacen es más barato ni otros datos de esa
fila.

Como puedo obtener, por cada artículo, la fila correspondiente al almacen
que tiene el precio más bajo entre los seleccionados ?

Un saludo
Salvador Ramos

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm



Preguntas similares