Consulta SQL del tipo PIVOT

Estoy intentando configurar una consulta SQL, pero no sé si es posible, por lo que lanzo la pregunta por si un experto puede aclararme como resolverla. Intentaré ser lo más claro posible.

La misión de la consulta es comparar datos que están en dos tablas distintas, tabla facturas y tabla factural (siendo esta última las líneas de cada producto que hay en la factura), dispuestas resumidamente del modo siguiente:

Tabla factura

Clafac--serie--numero--clacli--nomcli

1               A         1             300    JOSE

2               R         1             300    JOSE

3               A         2             310    MANUEL

4               R         2             310    MANUEL

Y la tabla factural

CLAFAL--CLAFAC--CLAART--CANTIDAD--LINDESC

1               1           1              2           Objeto1

1               1           2              3           Objeto2

1               1           3              1           Objeto3

1               1           1              2           Objeto1

1               1           2              3           Objeto2

1               1           3              1           Objeto3

1               2           4              6           Objeto4

1               2           5              9           Objeto5

1               2           4              6           Objeto4

1               2           5              9           Objeto5

La misión es crear un cursor en memoria, que me compare las series A y R para saber la cantidad de objetos entregados y devueltos, quedando más o menos de esta forma:

FACTURA-----SERIE-A-------CANTIDAD-----SERIE-R---CANTIDAD

----1-------------A-------------5------------ R---------------5

----2-------------A-------------15 ---------- R--------------15

Posteriormente a partir de esta tabla tengo que mostrar los datos en un informe-reporte, pero son miles las líneas y la intención es ver que cantidades faltan de cada serie A y R.

Tengo entendido de que este tipo de consultas son tipo PIVOT, pero no he encontrado mucha información al respecto y con las pruebas que he realizado de ninguna manera consigo construirla, por eso recurro a este grupo de gran nivel por si pueden asesorarme para formarla.

Una vez creada la consulta la intención es que a partir del cursor que se cree pasar los datos para qeu se muestren en un reporte o informe.

1 respuesta

Respuesta
1

Me podes especificar como se relacionan las tablas factura y factural porque con el ejemplo no me quedó claro.

Gracias

Slds

Luis

Perdona la tardanza, pero no me había dado cuenta de tu pregunta...

la tabla factura y factural se relacionan por la columna: clafac

¿Y cómo se obtienen los datos de salida?, por ejemplo para la factura 1:

Tabla factura

Clafac--serie--numero--clacli--nomcli

1               A         1             300    JOSE

Y la tabla factural

CLAFAL--CLAFAC--CLAART--CANTIDAD--LINDESC

1               1           1              2           Objeto1

1               1           2              3           Objeto2

1               1           3              1           Objeto3

1               1           1              2           Objeto1

1               1           2              3           Objeto2

1               1           3              1           Objeto3

Como se obtiene:

FACTURA-----SERIE-A-------CANTIDAD-----SERIE-R---CANTIDAD

----1-------------A-------------5------------ R---------------5

Ese es el problema, que quiero obtener esa tabla,  la última, que para ello tengo que  hacer una consulta tipo pivot, y no tengo ni idea de cómo montarla para conseguir esa tabla.

OK, pero no me queda claro de donde salen esos valores para la factura 1:

FACTURA-----SERIE-A-------CANTIDAD-----SERIE-R---CANTIDAD

----1-------------A-------------5------------ R---------------5

¿Esas dos cantidades 5 y 5 de donde salen?

Es un campo suma que tengo que crear de modo que sume el campo cantidad, con el objetivo de comparar las series A y R.

La consulta sería una cosa así...

select    A.NUMERO,  'A' as [SERIE - A],  SUM(CASE WHEN A.SERIE = 'A' THEN B.CANTIDAD END) AS CANTIDAD_SERIE_A,  'R' as [SERIE - R],  SUM(CASE WHEN A.SERIE = 'R' THEN B.CANTIDAD END) AS CANTIDAD_SERIE_R from Factura as A inner join Factural as B on B.CLAFAC = A.CLAFAC group by A.NUMERO;

Lo que pasa es que de este modo no me funciona, me da error y no soy capaz de saber donde está el error.

Esta consulta me la ha facilitado un experto en sql, pero se ve que aplicándola a visual fox pro, no funciona, y he probado cambiar las comillas ' por ", y varios datos con muchas combinaciones, y no me funciona.

¿Cuál es el mensaje de error que da?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas