Estoy tratando de pivote de una fila de columnas con las que está basado en las fechas con formato 'yyyy-MMM", y mientras esto funciona como se esperaba para el mes actual período, no trabajo para los próximos meses, y no puedo averiguar cómo solucionar este problema y agradecería mucho cualquier comentario sobre esta.
Aquí un poco de fondo: He comprado la cantidad proveniente de un Proveedor de la tabla de resumen que incluye información acerca de un contrato, tales como tipo de contrato, cantidad, número de lote, la fecha de creación en formato 'yyyy-MMM' como la fecha real no importa para este propósito.
Cantidad restante es otro de los campos procedentes de un elemento de contabilidad mesa de entrada, que es esencialmente un resumen de los tipos de entradas con base en el número de lote.
Consume la Cantidad es lo que estoy tratando de pivote basa en el mes fue consumida y también viene de los movimientos de productos con un tipo de entrada de filtro
SELECT *
FROM
(
SELECT VS.[Vendor Name], VS.[Vendor No_] AS 'Vendor_No', VS.[Date] AS 'Date',
SUM(VS.Quantity) AS 'Contracted_Quantity',
SUM(CQ.Consumed_Qty*-1) AS 'Consumed_Qty',
SUM(RQ.Remaining_Qty) AS Remaining_Qty,
'Contract Type' =
CASE
WHEN VS.[Contract Type] = 1 THEN 'CONTRACT A'
WHEN VS.[Contract Type] = 2 THEN 'CONTRACT B'
ELSE 'OTHERS'
END
FROM
(SELECT [Document No_],[Vendor No_],[Lot No_],FORMAT([Date Created], 'yyyy-MMM') AS 'Date'
,[Purch_ Contract No_],[Contract Type],[Quantity] FROM [A].[dbo].[Company$Volume Summary]) VS
/*to identify remaining quantity by lot (Lot no. is included in my VS alias statement)*/
LEFT JOIN (SELECT [Lot No_] ,SUM([Remaining Quantity]) AS Remaining_Qty FROM [A].[dbo].[Company$Item Ledger Entry]
GROUP BY [Lot No_]) RQ on RQ.[Lot No_] = VS.[Lot No_]
/*to identify consumed volume, if consumption is in future month compared to purchase month, it doesn't populate, this is where I believe the problem is*/
LEFT JOIN (SELECT [Lot No_],FORMAT([Posting Date], 'yyyy-MMM') AS 'Date',SUM([Quantity]) AS Consumed_Qty
FROM [A].[dbo].[Company$Item Ledger Entry]
WHERE [Entry Type] = '5'
GROUP BY [Lot No_], Format([Posting Date], 'yyyy-MMM')) CQ on CQ.[Lot No_] = VS.[Lot No_] and CQ.Date >= VS.[Date]
GROUP BY VS.[Vendor Name], FORMAT(VS.[Date Created],'yyyy-MMM'), PT.[Contract Type], VS.[Vendor No_]
) cs
PIVOT
(
SUM(Consumed_Qty)
for Date in ([2021-Sep], [2021-Oct], [2021-Nov])
) pvt
RESULTADO (Sólo se muestra parcialmente):
Como se puede ver, la segunda ABC del expediente de la Tecnología muestra un consumo en 2021-Oct que es preciso, sin embargo, con base en que se contrajo la cantidad comprada también en 2021-Oct, y lo que queda en ese registro, las necesidades de consumo para ser 9,373 y es corto (383) en comparación con el 8,990 es mostrar con precisión en 2021-Oct. En este caso, el 383 consumo real está cayendo en el 2021-Nov, sin embargo, mi código no parece elige eso.
Este es el caso exacto en tanto Zebra technologies registros así, cuando el resto es 0, lo que significa que se ha consumido por completo, sin embargo, ya que el contrato de compra fechas para los dos de ellos están en 2021-Sep y el consumo en el futuro mes 2021-Oct, la secuencia de comandos SQL no elige eso.
Agradecería cualquier orientación para ayudar a solucionar este problema y gracias de antemano.