Inner encadenado con suma

Tengo un problema al que espero que me podáis dar solución, veréis:

Tengo tres tablas, supongamos:

-Clientes (campos:CÓDIGOCLIENTE, NOMBRE)

-CabeceraAlbaran (campos:CODIGOCLIENTE, NUMEROALBARAN)

-LineasAlbaran. (Campos: NUMEROALBARAN, CODIGOARTICULO, IMPORTE)

Quiero obtener un listado con una sola línea por cada cliente donde obtenga:

CODIGOCLIENTE, NOMBRE y la suma de los importes de la tabla LINEASALBARAN.

He conseguido hacer una SELECT encadenando las tres tablas pero lo que obtengo lógicamente es una lista de resultados con una línea por cada línea de albarán y no sé cómo sumar los importes de la tabla sin que aparezcan en el listado todas las líneas.

Respuesta
1

El query seria:

SELECT

T1. CODIGOCLIENTE,

T1. NOMBRE,

SUM(T3. IMPORTE)

FROM

Clientes T1

INNER JOIN

CabeceraAlbaran T2 ON T1.CODIGOCLIENTE=T2.CODIGOCLIENTE

INNER JOIN

LineasAlbaran T3 ON T2.NUMEROALBARAN=T3.NUMEROALBARAN

GROUP BY

T1. Codigocliente, t1. NOMBRE

Suponiendo que en la tabla Clientes tengo la información

1, Javier Alvarado.

2, Raul Chazaro

En la tabla CabeceraAlbaran:

2,1

2,2

1,3

En la Tabla LineasAlbaran

1,1,500

1,2,300

2,2,100

3,1,200

La información output seria

1, Javier Alvarado, 200

2, Raul Chazaro, 800

2, Raul Chazaro, 100

Y rizando un poco el tema, sería posible obtener también en la select las LINEAS DE ALBARÁN? Para poder usarlas en el cuerpo del albarán y en el pie reseñar estos totales obtenidos?

Puedes agregar cuanta información sea necesaria, solo que cuanto mas campos agregues mas granular sera el asunto, entre menos agregues mas general sera.

Por ejemplo, en el query que coloque arriba es información muy general, que podría mostrar información con el objetivo de saber cuanto ha comprado cada cliente. Si agregas las lineas del Albarán, también las tendrás que agregar en el GROUP BY, esto mostrara varias lineas por cliente basado en lo que han comprado. Ejemplo:

SELECT
T1. Codigocliente,
T1. NOMBRE,

T3. Articulo,
SUM(T3. IMPORTE)
FROM
Clientes T1
INNER JOIN
CabeceraAlbaran T2 ON T1.CODIGOCLIENTE=T2.CODIGOCLIENTE
INNER JOIN
LineasAlbaran T3 ON T2.NUMEROALBARAN=T3.NUMEROALBARAN
GROUP BY

T1. Codigocliente, t1. NOMBRE, T2. Articulo

Que mostraría:

1, Javier Alvarado, Almohada, 50.

1, Javier Alvarado, Cobertor, 100.

1 Javier Alvarado, Sabana, 50.

Aquí no tendría ninguna relevancia poner el operador SUM ya que al agruparlos por articulo, busca las coincidencias de "Cobertor" por CODIGOCLIENTE "1" y los sumarizaria. Este tipo de información se le conoce como detalle, ya que esto detalla la linea de arriba

1, Javier Alvarado, 200.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas