Snažím se pivot řadě do sloupců, které jsou založeny na formátovaných dat 'yyyy-MMM' a když to funguje, jak se očekávalo pro aktuální měsíc období, to nefunguje pro budoucí měsíce a nemůžu přijít na to, jak opravit to, a bych ocenil nějakou zpětnou vazbu na to.
Tady je trochu pozadí: Koupil jsem si množství přicházející od Dodavatele souhrnná tabulka, která obsahuje informace o smlouva jako smluvní typ, množství, číslo šarže, datum vytvoření formátován do 'yyyy-MMM' jako skutečné datum není podstatné pro tento účel.
Zbývající Množství je další pole, přicházející z item ledger vstup tabulce, která je v podstatě shrneme-li všechny druhy údaje na základě čísla šarže.
Spotřebované Množství je to, co se snažím pivot založené na měsíc, to byla spotřebována a je také přichází z položky položek s položkou typ filtru
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
VÝSLEDEK (zobrazení Pouze částečně):
Jak můžete vidět, druhým ABC Technologie záznamu ukazuje spotřebu v roce 2021-Oct, které je přesné, nicméně, na základě toho, že sjednané množství zakoupit také v roce 2021-Říjen, a to, co zůstalo v záznamu, spotřeba musí být 9,373 a je krátké (383) ve srovnání s na 8990 to je přesně zobrazování v roce 2021-Oct. V tomto případě 383 skutečné spotřeby, klesá v roce 2021-Nov, nicméně, můj kód nezdá, aby si to vyzvednout.
To je přesně případ, v obou Zebra technologies záznamy, kde zbývající je 0, což by znamenalo, že to bylo zcela spotřebováno, nicméně, od kupní smlouvy dat pro obě z nich jsou v letech 2021-Sep a spotřeba je v budoucnu měsíc 2021-Oct, SQL skript, neznamená to zvednout.
Ocenil bych nějaké pokyny, které vám pomohou opravit a díky předem.