Sto cercando di spostare una riga in colonne che sono basati su formattato date "yyyy-MMM" e mentre questo funziona come previsto per un periodo di un mese, non riesce a lavorare per il futuro di mesi e non riesco a capire come risolvere questo problema e sarebbe molto apprezzato qualche feedback su questo.
Ecco un po ' di sfondo: Ho acquistato quantità proveniente da un Fornitore tabella di sintesi che include informazioni su un contratto come contratto tipo, la quantità, il numero di lotto, la data di creazione formattato in 'yyyy-MMM' come la data effettiva non importa per questo scopo.
Quantità rimanente è un altro campo provenienti da un elemento di contabilità tabella di voce che è essenzialmente sommando tutti i tipi di voci basate sul numero di lotto.
Consumato Quantità è quello che sto cercando di pivot in base al mese in cui è stata consumata e anche provenienti da la voce di voci di contabilità con una voce tipo di 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
RISULTATO (mostrando Solo parzialmente):
Come si può vedere, il secondo ABC Tecnologia record mostra un consumo nel 2021-Ott precisa, tuttavia, che l'importo contratto acquistati anche nel 2021 Ottobre, e quello che rimane nel record, il consumo deve essere 9,373 e ' breve (383) rispetto al 8,990 è la visualizzazione accurata nel 2021-Ott. In questo caso il 383 consumo effettivo è di cadere nel 2021-Nov, tuttavia, il mio codice non sembra che prendere.
Questo è il caso esatto in entrambi Zebra technologies record e, dove il resto è 0, il che significherebbe che è stato completamente consumato, tuttavia, dal momento che il contratto di acquisto date per entrambi sono nel 2021-Set e il consumo è in futuro mese 2021-Ott, lo script SQL non captarlo.
Apprezzerei qualsiasi guida per aiutare a risolvere questo problema e grazie in anticipo.