In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
OT: SELECT LAST(miCampo) FROM miTabla
OT: SELECT LAST(miCampo) FROM miTabla
Hola,
Esta sentencia SQL funciona muy bien con Access
SELECT LAST(miCampo) FROM miTabla;
Sin embargo en SqlServer 2000 no. ¿Conoceis alguna manera de conseguir el
mismo resultado en SqlServer 2000?
Saludos y gracias,
José Luis Capel
Esta sentencia SQL funciona muy bien con Access
SELECT LAST(miCampo) FROM miTabla;
Sin embargo en SqlServer 2000 no. ¿Conoceis alguna manera de conseguir el
mismo resultado en SqlServer 2000?
Saludos y gracias,
José Luis Capel
OT: SELECT LAST(miCampo) FROM miTabla
select max(miCampo) from mitabla
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97CCB68EE7486joseluiscapelaicom@82.144.6.50...]Xns97CCB68EE7486joseluiscapelaicom@82.144.6.50...[/email]
> Hola,
>
> Esta sentencia SQL funciona muy bien con Access
>
> SELECT LAST(miCampo) FROM miTabla;
>
> Sin embargo en SqlServer 2000 no. ¿Conoceis alguna manera de conseguir el
> mismo resultado en SqlServer 2000?
>
> Saludos y gracias,
> José Luis Capel
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97CCB68EE7486joseluiscapelaicom@82.144.6.50...]Xns97CCB68EE7486joseluiscapelaicom@82.144.6.50...[/email]
> Hola,
>
> Esta sentencia SQL funciona muy bien con Access
>
> SELECT LAST(miCampo) FROM miTabla;
>
> Sin embargo en SqlServer 2000 no. ¿Conoceis alguna manera de conseguir el
> mismo resultado en SqlServer 2000?
>
> Saludos y gracias,
> José Luis Capel
OT: SELECT LAST(miCampo) FROM miTabla
Christian,
Gracias por tu respuesta.
> select max(miCampo) from mitabla
>
Esta sentencia me devuelve el valor máximo de un campo de una consulta.
En mi caso quiero que me devuelva el último valor de un campo de una
consulta que puede, o no, coincidir con el valor máximo.
Saludos,
José Luis Capel
Aicom Global System, S.L.
Valencia - España
Gracias por tu respuesta.
> select max(miCampo) from mitabla
>
Esta sentencia me devuelve el valor máximo de un campo de una consulta.
En mi caso quiero que me devuelva el último valor de un campo de una
consulta que puede, o no, coincidir con el valor máximo.
Saludos,
José Luis Capel
Aicom Global System, S.L.
Valencia - España
OT: SELECT LAST(miCampo) FROM miTabla
Tendrias que hacer un select con el maximo valor de la clave primaria (si es
algun campo de identificacion o similar ) y luego un select con el valor de
la clave primaria.
Ej:
'select max(ClavePrim) from mitabla'
n:=oSql:fieldpos(1)
'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97CCBBB93BDE1joseluiscapelaicom@82.144.6.50...]Xns97CCBBB93BDE1joseluiscapelaicom@82.144.6.50...[/email]
> Christian,
>
> Gracias por tu respuesta.
>
>> select max(miCampo) from mitabla
>>
>
> Esta sentencia me devuelve el valor máximo de un campo de una consulta.
>
> En mi caso quiero que me devuelva el último valor de un campo de una
> consulta que puede, o no, coincidir con el valor máximo.
>
> Saludos,
> José Luis Capel
> Aicom Global System, S.L.
> Valencia - España
algun campo de identificacion o similar ) y luego un select con el valor de
la clave primaria.
Ej:
'select max(ClavePrim) from mitabla'
n:=oSql:fieldpos(1)
'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97CCBBB93BDE1joseluiscapelaicom@82.144.6.50...]Xns97CCBBB93BDE1joseluiscapelaicom@82.144.6.50...[/email]
> Christian,
>
> Gracias por tu respuesta.
>
>> select max(miCampo) from mitabla
>>
>
> Esta sentencia me devuelve el valor máximo de un campo de una consulta.
>
> En mi caso quiero que me devuelva el último valor de un campo de una
> consulta que puede, o no, coincidir con el valor máximo.
>
> Saludos,
> José Luis Capel
> Aicom Global System, S.L.
> Valencia - España
OT: SELECT LAST(miCampo) FROM miTabla
Christian,
Gracias por tu respuesta.
> Tendrias que hacer un select con el maximo valor de la clave primaria
> (si es algun campo de identificacion o similar ) y luego un select con
> el valor de la clave primaria.
>
> Ej:
> 'select max(ClavePrim) from mitabla'
> n:=oSql:fieldpos(1)
>
> 'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
>
>
Te pongo el caso concreto
Sea la tabla: lineas_albaran donde (simplificando) hay estas filas
cnumalb ccodart npvp
100 90 12.12
100 91 34.90
108 90 15.23
108 91 34.90
La sentencia Sql para Access sería:
SELECT ccodart, LAST(npvp) as 'Precio'
FROM lineas_albaran
WHERE cnumalb IN ('100','108')
GROUP BY ccodart
ORDER BY cnumalb
resultado
ccodart Precio
90 15.23
91 34.90
Sin embargo, si la sentencia fuese:
SELECT ccodart, LAST(npvp) as 'Precio'
FROM lineas_albaran
WHERE cnumalb IN ('108','100') <<<<< cambio orden!!
GROUP BY ccodart
ORDER BY cnumalb
el resultado
ccodart Precio
90 12.12
91 34.90
La idea es coger/tomar el último valor del campo nPVP de la consulta que
se está realizando. En access funciona 100x100 pero en SqlServer la
función LAST no existe... y no conozco un sustituto
Saludos y gracias por tu tiempo.
José Luis Capel
Gracias por tu respuesta.
> Tendrias que hacer un select con el maximo valor de la clave primaria
> (si es algun campo de identificacion o similar ) y luego un select con
> el valor de la clave primaria.
>
> Ej:
> 'select max(ClavePrim) from mitabla'
> n:=oSql:fieldpos(1)
>
> 'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
>
>
Te pongo el caso concreto
Sea la tabla: lineas_albaran donde (simplificando) hay estas filas
cnumalb ccodart npvp
100 90 12.12
100 91 34.90
108 90 15.23
108 91 34.90
La sentencia Sql para Access sería:
SELECT ccodart, LAST(npvp) as 'Precio'
FROM lineas_albaran
WHERE cnumalb IN ('100','108')
GROUP BY ccodart
ORDER BY cnumalb
resultado
ccodart Precio
90 15.23
91 34.90
Sin embargo, si la sentencia fuese:
SELECT ccodart, LAST(npvp) as 'Precio'
FROM lineas_albaran
WHERE cnumalb IN ('108','100') <<<<< cambio orden!!
GROUP BY ccodart
ORDER BY cnumalb
el resultado
ccodart Precio
90 12.12
91 34.90
La idea es coger/tomar el último valor del campo nPVP de la consulta que
se está realizando. En access funciona 100x100 pero en SqlServer la
función LAST no existe... y no conozco un sustituto

Saludos y gracias por tu tiempo.
José Luis Capel
OT: SELECT LAST(miCampo) FROM miTabla
Por cierto...
Este mismo resultado tambien lo estoy haciendo para tablas xbase (dbfs)
y son casi 30 lineas de código!!!!
Saludos,
José Luis Capel
Aicom <aicom@iaicom.com> wrote in
news:[email=Xns97CCD143AAE92asalesiaicomcom@82.144.6.50]Xns97CCD143AAE92asalesiaicomcom@82.144.6.50[/email]:
> Christian,
>
> Gracias por tu respuesta.
>> Tendrias que hacer un select con el maximo valor de la clave primaria
>> (si es algun campo de identificacion o similar ) y luego un select
>> con el valor de la clave primaria.
>>
>> Ej:
>> 'select max(ClavePrim) from mitabla'
>> n:=oSql:fieldpos(1)
>>
>> 'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
>>
>>
>
> Te pongo el caso concreto
>
> Sea la tabla: lineas_albaran donde (simplificando) hay estas filas
>
> cnumalb ccodart npvp
> 100 90 12.12
> 100 91 34.90
> 108 90 15.23
> 108 91 34.90
>
> La sentencia Sql para Access sería:
>
> SELECT ccodart, LAST(npvp) as 'Precio'
> FROM lineas_albaran
> WHERE cnumalb IN ('100','108')
> GROUP BY ccodart
> ORDER BY cnumalb
>
> resultado
>
> ccodart Precio
> 90 15.23
> 91 34.90
>
> Sin embargo, si la sentencia fuese:
>
> SELECT ccodart, LAST(npvp) as 'Precio'
> FROM lineas_albaran
> WHERE cnumalb IN ('108','100') <<<<< cambio orden!!
> GROUP BY ccodart
> ORDER BY cnumalb
>
> el resultado
>
> ccodart Precio
> 90 12.12
> 91 34.90
>
> La idea es coger/tomar el último valor del campo nPVP de la consulta
> que se está realizando. En access funciona 100x100 pero en SqlServer
> la función LAST no existe... y no conozco un sustituto
>
> Saludos y gracias por tu tiempo.
> José Luis Capel
>
>
Este mismo resultado tambien lo estoy haciendo para tablas xbase (dbfs)
y son casi 30 lineas de código!!!!
Saludos,
José Luis Capel
Aicom <aicom@iaicom.com> wrote in
news:[email=Xns97CCD143AAE92asalesiaicomcom@82.144.6.50]Xns97CCD143AAE92asalesiaicomcom@82.144.6.50[/email]:
> Christian,
>
> Gracias por tu respuesta.
>> Tendrias que hacer un select con el maximo valor de la clave primaria
>> (si es algun campo de identificacion o similar ) y luego un select
>> con el valor de la clave primaria.
>>
>> Ej:
>> 'select max(ClavePrim) from mitabla'
>> n:=oSql:fieldpos(1)
>>
>> 'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
>>
>>
>
> Te pongo el caso concreto
>
> Sea la tabla: lineas_albaran donde (simplificando) hay estas filas
>
> cnumalb ccodart npvp
> 100 90 12.12
> 100 91 34.90
> 108 90 15.23
> 108 91 34.90
>
> La sentencia Sql para Access sería:
>
> SELECT ccodart, LAST(npvp) as 'Precio'
> FROM lineas_albaran
> WHERE cnumalb IN ('100','108')
> GROUP BY ccodart
> ORDER BY cnumalb
>
> resultado
>
> ccodart Precio
> 90 15.23
> 91 34.90
>
> Sin embargo, si la sentencia fuese:
>
> SELECT ccodart, LAST(npvp) as 'Precio'
> FROM lineas_albaran
> WHERE cnumalb IN ('108','100') <<<<< cambio orden!!
> GROUP BY ccodart
> ORDER BY cnumalb
>
> el resultado
>
> ccodart Precio
> 90 12.12
> 91 34.90
>
> La idea es coger/tomar el último valor del campo nPVP de la consulta
> que se está realizando. En access funciona 100x100 pero en SqlServer
> la función LAST no existe... y no conozco un sustituto

>
> Saludos y gracias por tu tiempo.
> José Luis Capel
>
>
-
- Mensajes: 203
- Registrado: Vie Abr 01, 2005 9:05 am
OT: SELECT LAST(miCampo) FROM miTabla
Jose Luis
SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
(MS SQL Server)
Saludos
Jose A. Suarez
José Luis Capel escribió:
> Por cierto...
>
> Este mismo resultado tambien lo estoy haciendo para tablas xbase (dbfs)
> y son casi 30 lineas de código!!!!
>
> Saludos,
> José Luis Capel
>
>
> Aicom <aicom@iaicom.com> wrote in
> news:[email=Xns97CCD143AAE92asalesiaicomcom@82.144.6.50]Xns97CCD143AAE92asalesiaicomcom@82.144.6.50[/email]:
>
>> Christian,
>>
>> Gracias por tu respuesta.
>>> Tendrias que hacer un select con el maximo valor de la clave primaria
>>> (si es algun campo de identificacion o similar ) y luego un select
>>> con el valor de la clave primaria.
>>>
>>> Ej:
>>> 'select max(ClavePrim) from mitabla'
>>> n:=oSql:fieldpos(1)
>>>
>>> 'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
>>>
>>>
>> Te pongo el caso concreto
>>
>> Sea la tabla: lineas_albaran donde (simplificando) hay estas filas
>>
>> cnumalb ccodart npvp
>> 100 90 12.12
>> 100 91 34.90
>> 108 90 15.23
>> 108 91 34.90
>>
>> La sentencia Sql para Access sería:
>>
>> SELECT ccodart, LAST(npvp) as 'Precio'
>> FROM lineas_albaran
>> WHERE cnumalb IN ('100','108')
>> GROUP BY ccodart
>> ORDER BY cnumalb
>>
>> resultado
>>
>> ccodart Precio
>> 90 15.23
>> 91 34.90
>>
>> Sin embargo, si la sentencia fuese:
>>
>> SELECT ccodart, LAST(npvp) as 'Precio'
>> FROM lineas_albaran
>> WHERE cnumalb IN ('108','100') <<<<< cambio orden!!
>> GROUP BY ccodart
>> ORDER BY cnumalb
>>
>> el resultado
>>
>> ccodart Precio
>> 90 12.12
>> 91 34.90
>>
>> La idea es coger/tomar el último valor del campo nPVP de la consulta
>> que se está realizando. En access funciona 100x100 pero en SqlServer
>> la función LAST no existe... y no conozco un sustituto
>>
>> Saludos y gracias por tu tiempo.
>> José Luis Capel
>>
>>
>
SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
(MS SQL Server)
Saludos
Jose A. Suarez
José Luis Capel escribió:
> Por cierto...
>
> Este mismo resultado tambien lo estoy haciendo para tablas xbase (dbfs)
> y son casi 30 lineas de código!!!!
>
> Saludos,
> José Luis Capel
>
>
> Aicom <aicom@iaicom.com> wrote in
> news:[email=Xns97CCD143AAE92asalesiaicomcom@82.144.6.50]Xns97CCD143AAE92asalesiaicomcom@82.144.6.50[/email]:
>
>> Christian,
>>
>> Gracias por tu respuesta.
>>> Tendrias que hacer un select con el maximo valor de la clave primaria
>>> (si es algun campo de identificacion o similar ) y luego un select
>>> con el valor de la clave primaria.
>>>
>>> Ej:
>>> 'select max(ClavePrim) from mitabla'
>>> n:=oSql:fieldpos(1)
>>>
>>> 'select micampo from mitabla where ClavePrim='+strzero(n,12,0)
>>>
>>>
>> Te pongo el caso concreto
>>
>> Sea la tabla: lineas_albaran donde (simplificando) hay estas filas
>>
>> cnumalb ccodart npvp
>> 100 90 12.12
>> 100 91 34.90
>> 108 90 15.23
>> 108 91 34.90
>>
>> La sentencia Sql para Access sería:
>>
>> SELECT ccodart, LAST(npvp) as 'Precio'
>> FROM lineas_albaran
>> WHERE cnumalb IN ('100','108')
>> GROUP BY ccodart
>> ORDER BY cnumalb
>>
>> resultado
>>
>> ccodart Precio
>> 90 15.23
>> 91 34.90
>>
>> Sin embargo, si la sentencia fuese:
>>
>> SELECT ccodart, LAST(npvp) as 'Precio'
>> FROM lineas_albaran
>> WHERE cnumalb IN ('108','100') <<<<< cambio orden!!
>> GROUP BY ccodart
>> ORDER BY cnumalb
>>
>> el resultado
>>
>> ccodart Precio
>> 90 12.12
>> 91 34.90
>>
>> La idea es coger/tomar el último valor del campo nPVP de la consulta
>> que se está realizando. En access funciona 100x100 pero en SqlServer
>> la función LAST no existe... y no conozco un sustituto

>>
>> Saludos y gracias por tu tiempo.
>> José Luis Capel
>>
>>
>
OT: SELECT LAST(miCampo) FROM miTabla
José Alfonso,
Gracias por responder.
>
> SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
>
> SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
> (MS SQL Server)
>
No acaba de ser la sentencia que necesito. Como explicaba, la sentencia
SELECT tiene un GROUP BY ccodar lo cual hace que los artículos se agrupen
por esa columna. Además, el TOP 1 está limitando a 1 fila el resultado
de la consulta, cuando no se sabe cuantas filas se van a obtener.
Gracias por tu ayuda.
Saludos,
José Luis Capel
Gracias por responder.
>
> SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
>
> SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
> (MS SQL Server)
>
No acaba de ser la sentencia que necesito. Como explicaba, la sentencia
SELECT tiene un GROUP BY ccodar lo cual hace que los artículos se agrupen
por esa columna. Además, el TOP 1 está limitando a 1 fila el resultado
de la consulta, cuando no se sabe cuantas filas se van a obtener.
Gracias por tu ayuda.
Saludos,
José Luis Capel
OT: SELECT LAST(miCampo) FROM miTabla
Ahora te entiendo no tenes una clave primaria o campo autoincremental. No
deberias ponerle a tu tabla una clave primaria ([CLAVE] [int] IDENTITY (1,
1) NOT NULL ,).
Yo tambien vengo de programar en Clipper y al pasar a motores de base de
datos no le encontraba el sentido el tema es cuando queres buscar un
registro (por ejemplo en un campo de item de ventas).
Otra cosa el campo cnumalb que es ?, porque podria se asi la consulta
select ccodart, max(cnumalb) from mitabla group by ccodart
luego recorres el select y haces : select * from mitabla where
cnumalb=cValor1 and ccodart=cValor2
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97CD56AC7FF4Ejoseluiscapelaicom@82.144.6.50...]Xns97CD56AC7FF4Ejoseluiscapelaicom@82.144.6.50...[/email]
> José Alfonso,
>
> Gracias por responder.
>
>
>>
>> SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
>>
>> SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
>> (MS SQL Server)
>>
>
> No acaba de ser la sentencia que necesito. Como explicaba, la sentencia
> SELECT tiene un GROUP BY ccodar lo cual hace que los artículos se agrupen
> por esa columna. Además, el TOP 1 está limitando a 1 fila el resultado
> de la consulta, cuando no se sabe cuantas filas se van a obtener.
>
> Gracias por tu ayuda.
> Saludos,
> José Luis Capel
deberias ponerle a tu tabla una clave primaria ([CLAVE] [int] IDENTITY (1,
1) NOT NULL ,).
Yo tambien vengo de programar en Clipper y al pasar a motores de base de
datos no le encontraba el sentido el tema es cuando queres buscar un
registro (por ejemplo en un campo de item de ventas).
Otra cosa el campo cnumalb que es ?, porque podria se asi la consulta
select ccodart, max(cnumalb) from mitabla group by ccodart
luego recorres el select y haces : select * from mitabla where
cnumalb=cValor1 and ccodart=cValor2
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97CD56AC7FF4Ejoseluiscapelaicom@82.144.6.50...]Xns97CD56AC7FF4Ejoseluiscapelaicom@82.144.6.50...[/email]
> José Alfonso,
>
> Gracias por responder.
>
>
>>
>> SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
>>
>> SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
>> (MS SQL Server)
>>
>
> No acaba de ser la sentencia que necesito. Como explicaba, la sentencia
> SELECT tiene un GROUP BY ccodar lo cual hace que los artículos se agrupen
> por esa columna. Además, el TOP 1 está limitando a 1 fila el resultado
> de la consulta, cuando no se sabe cuantas filas se van a obtener.
>
> Gracias por tu ayuda.
> Saludos,
> José Luis Capel
-
- Mensajes: 203
- Registrado: Vie Abr 01, 2005 9:05 am
OT: SELECT LAST(miCampo) FROM miTabla
Pues no entiendo que quieres hacer. Last() devuelve el último ¿no? O
sea, solo uno.
José Luis Capel escribió:
> José Alfonso,
>
> Gracias por responder.
>
>
>> SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
>>
>> SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
>> (MS SQL Server)
>>
>
> No acaba de ser la sentencia que necesito. Como explicaba, la sentencia
> SELECT tiene un GROUP BY ccodar lo cual hace que los artículos se agrupen
> por esa columna. Además, el TOP 1 está limitando a 1 fila el resultado
> de la consulta, cuando no se sabe cuantas filas se van a obtener.
>
> Gracias por tu ayuda.
> Saludos,
> José Luis Capel
sea, solo uno.
José Luis Capel escribió:
> José Alfonso,
>
> Gracias por responder.
>
>
>> SELECT micampo FROM tabla ORDER micampo DESC LIMIT 1 (MySQL)
>>
>> SELECT TOP 1 micampo FROM tabla ORDER _el_orden_por_el_que_quieres DESC
>> (MS SQL Server)
>>
>
> No acaba de ser la sentencia que necesito. Como explicaba, la sentencia
> SELECT tiene un GROUP BY ccodar lo cual hace que los artículos se agrupen
> por esa columna. Además, el TOP 1 está limitando a 1 fila el resultado
> de la consulta, cuando no se sabe cuantas filas se van a obtener.
>
> Gracias por tu ayuda.
> Saludos,
> José Luis Capel
OT: SELECT LAST(miCampo) FROM miTabla
José Alfonso,
> Pues no entiendo que quieres hacer. Last() devuelve el último ¿no? O
> sea, solo uno.
>
Quiero sacar de una tabla de lineas de albarán unas estadísticas de dos
tipos (simplificado):
a. Las entregas por artículos acotadas por fecha, número de albarán, con
las siguientes columnas: código artículo, referencia, último precio,
cantidad, % descuento último, subtotal ( columna calculada en base a las
dos columnas anteriores).
b. Las entregas por artículos acotadas por fecha, número de albarán, con
las siguientes columnas: código artículo, referencia, precio medio,
cantidad, % descuento medio , subtotal ( columna calculada en base a las
dos columnas anteriores).
Para el caso b la sentencia podría ser algo así (pueden haber errores):
SELECT CodigoArticulo, Descripcion,
Avg(Precio) AS PrecioMedio,
Avg(Dto) AS DtoMedio,
SUM(Cantidad) AS CantidadEntregada,
(PrecioMedio * CantidadEntregada - PrecioMedio * CantidadEntregada *
DtoMedio / 100 ) AS SubTotal
WHERE FechAlb >= "lafecha" AND FechaAlb <= "otrafecha" // Seguirían las
condiciones de la consulta
GROUP BY CodigoArticulo,Descripcion
ORDER BY CodigoArticulo
Para el caso A lo hacía así en ACCESS
SELECT CodigoArticulo, Descripcion,
LAST(Precio) AS PrecioUltimo,
LAST(Dto) AS DtoUltimo,
SUM(Cantidad) AS CantidadEntregada,
(PrecioUltimo * CantidadEntregada - PrecioUltimo * CantidadEntregada
* DtoUltimo / 100 ) AS SubTotal
WHERE FechAlb >= "lafecha" AND FechaAlb <= "otrafecha" // Seguirían las
condiciones de la consulta
GROUP BY CodigoArticulo,Descripcion
ORDER BY CodigoArticulo
Y es en este último caso donde me he quedado 'off'
Saludos,
José Luis Capel
> Pues no entiendo que quieres hacer. Last() devuelve el último ¿no? O
> sea, solo uno.
>
Quiero sacar de una tabla de lineas de albarán unas estadísticas de dos
tipos (simplificado):
a. Las entregas por artículos acotadas por fecha, número de albarán, con
las siguientes columnas: código artículo, referencia, último precio,
cantidad, % descuento último, subtotal ( columna calculada en base a las
dos columnas anteriores).
b. Las entregas por artículos acotadas por fecha, número de albarán, con
las siguientes columnas: código artículo, referencia, precio medio,
cantidad, % descuento medio , subtotal ( columna calculada en base a las
dos columnas anteriores).
Para el caso b la sentencia podría ser algo así (pueden haber errores):
SELECT CodigoArticulo, Descripcion,
Avg(Precio) AS PrecioMedio,
Avg(Dto) AS DtoMedio,
SUM(Cantidad) AS CantidadEntregada,
(PrecioMedio * CantidadEntregada - PrecioMedio * CantidadEntregada *
DtoMedio / 100 ) AS SubTotal
WHERE FechAlb >= "lafecha" AND FechaAlb <= "otrafecha" // Seguirían las
condiciones de la consulta
GROUP BY CodigoArticulo,Descripcion
ORDER BY CodigoArticulo
Para el caso A lo hacía así en ACCESS
SELECT CodigoArticulo, Descripcion,
LAST(Precio) AS PrecioUltimo,
LAST(Dto) AS DtoUltimo,
SUM(Cantidad) AS CantidadEntregada,
(PrecioUltimo * CantidadEntregada - PrecioUltimo * CantidadEntregada
* DtoUltimo / 100 ) AS SubTotal
WHERE FechAlb >= "lafecha" AND FechaAlb <= "otrafecha" // Seguirían las
condiciones de la consulta
GROUP BY CodigoArticulo,Descripcion
ORDER BY CodigoArticulo
Y es en este último caso donde me he quedado 'off'
Saludos,
José Luis Capel