SUBCONSULTA EN VBA ACCESS 2007
Publicado por Ricardo (6 intervenciones) el 14/10/2020 09:36:51
Hola, después de intentar mil cosas no he conseguido que me de el resultado que quiero
Expongo mis datos
Tengo tres tablas
Tabla1
Campo1 Centro de trabajo
Campo2 Importe
Campo3 Código de la operación
Campo4 Código del producto
Tabla2
Campo5 Id_Código del producto (Esta relacionado con Código del producto)
Campo6 Clasificación del producto
Tabla3
Campo7 Id_Código de la operación ( relacionado con Código de la operación)
Campo8 Tipo de alta
Campo9 Tipo de operación
SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS ImporteR
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "*R"
GROUP BY tabla2.Clasificación del producto
Hasta aquí correcto
Realizo otra igual con estos datos
SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS Importea
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "A*"
GROUP BY tabla2.Clasificación del producto
También me funciona y cuando quiero anidarlo me da error
SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS ImporteR,
(SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS Importea
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "A*") As ImporteEnA
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "*R"
GROUP BY tabla2.Clasificación del producto
Esto es lo que me da a mi, si comparais con lo que quiero que me resulte, en la columna ImporteEnA me esta sumando el total del importe de cada Clasificación del producto.

el resultado debería ser algo así

Espero haberme explicado, puede que me falte alguna coma o similar en la explicación, funcionar me funciona, lo que me da es el resultado mal.
Muchas gracias de antemano
Expongo mis datos
Tengo tres tablas
Tabla1
Campo1 Centro de trabajo
Campo2 Importe
Campo3 Código de la operación
Campo4 Código del producto
Tabla2
Campo5 Id_Código del producto (Esta relacionado con Código del producto)
Campo6 Clasificación del producto
Tabla3
Campo7 Id_Código de la operación ( relacionado con Código de la operación)
Campo8 Tipo de alta
Campo9 Tipo de operación
SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS ImporteR
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "*R"
GROUP BY tabla2.Clasificación del producto
Hasta aquí correcto
Realizo otra igual con estos datos
SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS Importea
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "A*"
GROUP BY tabla2.Clasificación del producto
También me funciona y cuando quiero anidarlo me da error
SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS ImporteR,
(SELECT tabla2.Clasificación del producto, Sum(Tabla1.Importe) AS Importea
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "A*") As ImporteEnA
FROM tabla2INNER JOIN (Tabla3 INNER JOIN Tabla1 ON Tabla3.Id_Código de la operación = Tabla1.Código de la operación) ON Tabla2.Id_Código del producto= Tabla1.Código del producto
WHERE Tabla3.Tipo de alta="20" AND Tabla1.Centro de trabajo='03' AND Tabla3.Tipo de alta Like "*R"
GROUP BY tabla2.Clasificación del producto
Esto es lo que me da a mi, si comparais con lo que quiero que me resulte, en la columna ImporteEnA me esta sumando el total del importe de cada Clasificación del producto.

el resultado debería ser algo así

Espero haberme explicado, puede que me falte alguna coma o similar en la explicación, funcionar me funciona, lo que me da es el resultado mal.
Muchas gracias de antemano
Valora esta pregunta


0