Consulta de agrupación, me mezcla registros

10/03/2010 - 14:28 por Bartolomé Genovard | Informe spam
Hola,

tengo una tabla:

CREATE TABLE [dbo].[Table_1](
[curso] [nchar](10) NOT NULL,
[nota] [int] NOT NULL,
[fecha] [date] NOT NULL,

y con datos
curso nota fecha
A 1 2010-12-31
A 3 2010-01-14
A 4 2010-02-18
A 9 2009-12-11
B 1 2010-05-15
B 10 2010-02-01
C 3 2010-04-21
D 2 2010-01-01

Digamos que necesito tomar la última nota de cada curso, para lo cual
necesito agrupar. Pero claro, en la consulta debo indicar una función
a cada campo, en este caso

SELECT curso, MAX(nota) AS Expr1, MAX(fecha) AS Expr2
FROM dbo.Table_1
GROUP BY curso

pero aquí tengo el error, pues no quiero el valor máximo de nota, sino
la uqe corresponda al curso en cuestión... es que lo único que se me
ocurre es hacer dos consultas, una para sacar el último curso y luego
de ahí sacar las notas de cada uno... uffff, q rollo...

Y es que en el campo nota debo asignar alguna función pq sino la
consulta da error...

gracias
 

Leer las respuestas

#1 Bartolomé Genovard
10/03/2010 - 14:31 | Informe spam
No lo he puesto, pero la consulta anterior devuelve:

curso nota fecha
A 9 2010-12-31
B 10 2010-05-15
C 3 2010-04-21
D 2 2010-01-01

Y debería ser

curso nota fecha
A 1 2010-12-31
B 1 2010-05-15
C 3 2010-04-21
D 2 2010-01-01

supongo que con una consulta si se puede hacer, pues con access se
puede hacer, y me extraña que aquí no; es que soy novato con el sql
server.

gracias

On 10 mar, 14:28, Bartolomé Genovard wrote:
Hola,

tengo una tabla:

CREATE TABLE [dbo].[Table_1](
        [curso] [nchar](10) NOT NULL,
        [nota] [int] NOT NULL,
        [fecha] [date] NOT NULL,

y con datos
curso       nota    fecha
A               1       2010-12-31
A               3       2010-01-14
A               4       2010-02-18
A               9       2009-12-11
B               1       2010-05-15
B               10      2010-02-01
C               3       2010-04-21
D               2       2010-01-01

Digamos que necesito tomar la última nota de cada curso, para lo cual
necesito agrupar. Pero claro, en la consulta debo indicar una función
a cada campo, en este caso



SELECT     curso, MAX(nota) AS Expr1, MAX(fecha) AS Expr2
FROM         dbo.Table_1
GROUP BY curso

pero aquí tengo el error, pues no quiero el valor máximo de nota, sino
la uqe corresponda al curso en cuestión... es que lo único que se me
ocurre es hacer dos consultas, una para sacar el último curso y luego
de ahí sacar las notas de cada uno... uffff, q rollo...

Y es que en el campo nota debo asignar alguna función pq sino la
consulta da error...

gracias

Preguntas similares