Je suis en train de faire pivoter une ligne dans les colonnes qui sont basées sur des dates mises en forme "aaaa-MMM" et tout cela fonctionne comme prévu pour une période de douze mois, il n'a pas de travail pour les mois à venir et je ne peux pas comprendre comment résoudre ce problème et vous serions reconnaissants de tout commentaire.
Voici un peu de contexte: J'ai acheté la quantité venant d'un Vendeur résumé de la table qui contient des informations sur un contrat comme un contrat type, la quantité, le numéro de lot, la date de création formaté en "aaaa-MMM", comme la date réelle n'a pas d'importance pour ce but.
Quantité restante est un autre domaine à venir à partir d'un élément de comptabilité d'entrée de la table qui est essentiellement résumant toutes sortes d'entrées en fonction de son numéro de lot.
Consommé la Quantité est ce que je suis en train de pivot basé sur le mois, il a été consommé et est également à venir à partir de l'élément écritures avec une entrée de type de filtre
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
RÉSULTAT (Seulement montrant partiellement):
Comme vous pouvez le voir, la seconde ABC de la Technologie de l'enregistrement s'affiche une consommation en 2021-Oct ce qui est exact, cependant, se fondant sur ce montant acheté également en 2021-Oct, et qu'est-ce que restant dans cet enregistrement, la consommation doit être 9,373 et est court (383) par rapport à la 8,990 c'est précisément l'affichage en 2021-Oct. Dans ce cas, l'383 réel de la consommation est en baisse en 2021-Nov, cependant, mon code ne semble pas ramasser ça.
C'est exactement le cas dans les deux Zebra technologies des registres et où le reste est 0, ce qui signifie qu'il a été entièrement consommé, cependant, puisque le contrat d'achat des dates pour les deux d'entre eux sont en 2021-Sep et de la consommation dans le futur mois 2021-Oct, le script SQL ne pas ramasser ça.
J'apprécierais toute orientation pour aider à résoudre ce problème et merci d'avance.