Access - Pivot Mostrar Todos los Registros

 
Vista:

Pivot Mostrar Todos los Registros

Publicado por Hector (1 intervención) el 18/04/2007 16:59:55
Hola una duda que creo que es muy sencilla solo que casi no he usado el pivot

Tengo dos tablas una de articulos y otra de cargosdetalle

articulos solo trae clave del articulo y cargosdetalle trae el importe y el tipo de articulo que se utilizo

necesito hacer una referencia cruzada asi

Folio Total Zapato Tenis Ropa Accesorios

5 1000 600 400

en mi tabla original viene

articulos

clave articulo
1 zapato
2 tenis

etc

y en cargodetalle

folio clavearticulo importe
5 1 600
5 2 400

ya tengo mi consulta pero cuando la ejecuto no me salen ni ropa ni accesorios, como se hace para que apesar de no tener registro salgan

este es mi query, esta un poco diferente en nombres ok

gracias

TransForm Sum(Importe) as Resultado
Select CargoLink, Sum(Importe) as Total
From
TipodeArticulos as a left join cargosdetalle as b
on a.tipodearticuloskey=b.tipodearticulolink
Where CargoLink =35666
Group By CargoLink
Pivot Articulo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Creación de una referencia cruzada con valores faltantes en consultas pivot

Publicado por Alejandro (4142 intervenciones) el 09/08/2023 16:45:24
Para lograr que los valores faltantes (como "Ropa" y "Accesorios") también se muestren en la tabla pivot, incluso si no hay registros correspondientes en la tabla cargosdetalle, puedes utilizar una combinación de subconsulta y la función COALESCE en tu consulta pivot. Aquí tienes la solución:

1
2
3
4
5
6
7
8
9
10
TRANSFORM Sum(IIf(IsNull(Importe), 0, Importe)) AS Resultado
SELECT CargoLink, Sum(Importe) AS Total
FROM (
    SELECT DISTINCT CargoLink, Articulo
    FROM TipodeArticulos, cargosdetalle
    WHERE CargoLink = 35666
) AS subquery
LEFT JOIN cargosdetalle AS b ON subquery.CargoLink = b.tipodearticulolink AND subquery.Articulo = b.Articulo
GROUP BY CargoLink
PIVOT Articulo;

Explicación:
1. La subconsulta (subquery) combina las tablas TipodeArticulos y cargosdetalle para obtener una lista única de combinaciones de CargoLink y Articulo que existen en los registros.
2. Luego, en la consulta principal, hacemos un LEFT JOIN entre la subconsulta y la tabla cargosdetalle, utilizando tanto CargoLink como Articulo como criterios de combinación.
3. Utilizamos la función IIf junto con IsNull para asignar un valor de 0 a los registros donde Importe es nulo (es decir, donde no hay un registro correspondiente en la tabla cargosdetalle).
4. Finalmente, la función COALESCE se utiliza en la parte PIVOT de la consulta para asegurarse de que aparezcan todas las columnas, incluso si no hay valores correspondientes.

Con esta solución, deberías obtener una tabla pivot que incluye todas las categorías ("Zapato", "Tenis", "Ropa" y "Accesorios") con sus respectivos valores de importe, incluso si no hay registros en la tabla cargosdetalle para algunas categorías en particular. Asegúrate de ajustar los nombres de las tablas y campos según tu base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar