SQL Server y LAST

13/10/2004 - 14:07 por Angel Zapata | Informe spam
Hola a todos, tengo un problema con SQL Server, resulta que bajo Access yo
ejecuto una consulta con la instucción LAST y me funciona al pelo

SELECT AlmacenInventario.InventarioArticulo, Articulo.ArtDescripcion,
Last(AlmacenInventario.InventarioFecha) AS ÚltimoDeInventarioFecha,
Last(AlmacenInventario.InventarioCantidad) AS ÚltimoDeInventarioCantidad,
Last(AlmacenInventario.InventarioObservacion) AS
ÚltimoDeInventarioObservacion
FROM AlmacenInventario INNER JOIN Articulo ON
AlmacenInventario.InventarioArticulo = Articulo.ArtCodigo
GROUP BY AlmacenInventario.InventarioArticulo, Articulo.ArtDescripcion;

pero bajo SQL Server, la instrucción LAST no existe, por tanto debo
sustituirla por MAX, pero esto me da el mayor valor, no el ultimo registro.

Yo necesito, sobre una tabla de inventario, conocer el valor que tiene en
existencias y en observaciones segun la ultima fecha de inventario
realizada, por tanto como cada artículo puede ser inventariado en diferentes
fechas, no me vale el elegir una fecha sino conocer de cada artículo cuando
se inventarió por ultima vez y cual fue su resultado.

Estoy perdido, he buscado y rebuscado y no encuentro nada.

Gracias por adelantado
Angel Zapata

Preguntas similare

Leer las respuestas

#1 Javier Loria
13/10/2004 - 15:18 | Informe spam
Hola:
En SQL se utiliza "conjuntos de datos" que por su naturaleza no son
ordenados ni numerados, por ende LAST/FIRST no tienen sentido ya que no hay
orden.
Si puedes distinguir alguna criterio para seleccionar el "LAST" entonces
puedes construir sentencias para devolver esta ultima fila, claro que son un
rollo para el que esta acostumbrado a usar LAST.
Si usamos de ejemplo Order Details de Northwindy asumiendo que el
criterio es la OrdenID, podrias hacer:
==SELECT O1.ProductID
, O1.UnitPrice
, O1.Quantity
FROM [Order Details] AS O1
JOIN (SELECT ProductID
, MAX(OrderID) AS OrderID
FROM [Order Details]
GROUP BY ProductID) AS O2
ON O1.ProductID=O2.ProductID
AND O1.OrderID=O2.OrderID
== Esto debe darte el LAST de UnitPrice y el LAST de Quantity. El SELECT
interno sirve para seleccionar la ultima fila de cada producto.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Angel Zapata" wrote in message
news:e5T#
Hola a todos, tengo un problema con SQL Server, resulta que bajo Access yo
ejecuto una consulta con la instucción LAST y me funciona al pelo

SELECT AlmacenInventario.InventarioArticulo, Articulo.ArtDescripcion,
Last(AlmacenInventario.InventarioFecha) AS ÚltimoDeInventarioFecha,
Last(AlmacenInventario.InventarioCantidad) AS ÚltimoDeInventarioCantidad,
Last(AlmacenInventario.InventarioObservacion) AS
ÚltimoDeInventarioObservacion
FROM AlmacenInventario INNER JOIN Articulo ON
AlmacenInventario.InventarioArticulo = Articulo.ArtCodigo
GROUP BY AlmacenInventario.InventarioArticulo, Articulo.ArtDescripcion;

pero bajo SQL Server, la instrucción LAST no existe, por tanto debo
sustituirla por MAX, pero esto me da el mayor valor, no el ultimo


registro.

Yo necesito, sobre una tabla de inventario, conocer el valor que tiene en
existencias y en observaciones segun la ultima fecha de inventario
realizada, por tanto como cada artículo puede ser inventariado en


diferentes
fechas, no me vale el elegir una fecha sino conocer de cada artículo


cuando
se inventarió por ultima vez y cual fue su resultado.

Estoy perdido, he buscado y rebuscado y no encuentro nada.

Gracias por adelantado
Angel Zapata



Respuesta Responder a este mensaje
#2 Maxi
13/10/2004 - 19:47 | Informe spam
Hola para emular esto de Access deberias usar TOP

Select top 1 * from customers order by campo

Suerte


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Angel Zapata" escribió en el
mensaje news:e5T%
Hola a todos, tengo un problema con SQL Server, resulta que bajo Access yo
ejecuto una consulta con la instucción LAST y me funciona al pelo

SELECT AlmacenInventario.InventarioArticulo, Articulo.ArtDescripcion,
Last(AlmacenInventario.InventarioFecha) AS ÚltimoDeInventarioFecha,
Last(AlmacenInventario.InventarioCantidad) AS ÚltimoDeInventarioCantidad,
Last(AlmacenInventario.InventarioObservacion) AS
ÚltimoDeInventarioObservacion
FROM AlmacenInventario INNER JOIN Articulo ON
AlmacenInventario.InventarioArticulo = Articulo.ArtCodigo
GROUP BY AlmacenInventario.InventarioArticulo, Articulo.ArtDescripcion;

pero bajo SQL Server, la instrucción LAST no existe, por tanto debo
sustituirla por MAX, pero esto me da el mayor valor, no el ultimo


registro.

Yo necesito, sobre una tabla de inventario, conocer el valor que tiene en
existencias y en observaciones segun la ultima fecha de inventario
realizada, por tanto como cada artículo puede ser inventariado en


diferentes
fechas, no me vale el elegir una fecha sino conocer de cada artículo


cuando
se inventarió por ultima vez y cual fue su resultado.

Estoy perdido, he buscado y rebuscado y no encuentro nada.

Gracias por adelantado
Angel Zapata








Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida