Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/07/2006, 15:12
Avatar de Mithrandir
Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Esto me funcionó:
Código:
CREATE TABLE #tabla (campo1 nchar(1), campo2 int, campo3 int, campo4 int, CONSTRAINT jeje PRIMARY KEY(campo1, campo3))

INSERT INTO #tabla VALUES ('A', 3, 12345678 , 3)
INSERT INTO #tabla VALUES ('B', 2, 12345678 , 1)
INSERT INTO #tabla VALUES ('C', 5, 13456789 , 5)
INSERT INTO #tabla VALUES ('D', 3, 98765432 , 8)
INSERT INTO #tabla VALUES ('E', 6, 98765432 , 1)
INSERT INTO #tabla VALUES ('F', 1, 98765432 , 5)

SELECT t1.campo1, t2.campo2, t1.campo3, sum(t1.campo4) Total
FROM #tabla t1
INNER JOIN (SELECT campo3, min(campo2) AS campo2 FROM #tabla GROUP BY campo3) t2
	ON t2.campo3 = t1.campo3
	AND t2.campo2 = t1.campo2
GROUP BY t1.campo1,t2.campo2, t1.campo3

DROP TABLE #tabla
Pero si lo revisas tiene una debilidad, dependes de que solo haya un valor de campo2 por grupo de registros, si se repite dentro de ese grupo se te duplicará el registro de ese grupo.

PD. Dices que la llave primaria es campo3, pero según los ejemplos que pones eso no es cierto, en el ejemplo asumo que entre campo1 y campo3 hacen la llave primaria, cosa que complica el asunto. Si puedes aclarar eso quizá pueda salir una mejor solución.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche