Bir satırı 'yyyy-MMM' biçimlendirilmiş tarihlere dayanan sütunlara döndürmeye çalışıyorum ve bu, geçerli bir aylık dönem için beklendiği gibi çalışsa da, gelecek aylar için çalışamıyor ve bunu nasıl düzelteceğimi anlayamıyorum ve bu konuda herhangi bir geri bildirim için çok minnettar olurum.
İşte biraz arka plan: Sözleşme türü, miktar, parti numarası, 'yyyy-MMM' olarak biçimlendirilmiş oluşturma tarihi gibi bir sözleşme hakkında bilgi içeren bir Satıcı özet tablosundan gelen miktarı satın aldım, çünkü gerçek tarih bu amaç için önemli değil.
Kalan Miktar, esasen parti numarasına göre her türlü girişi toplayan bir kalem defteri giriş tablosundan gelen başka bir alandır.
Tüketilen Miktar, tüketildiği aya göre döndürmeye çalıştığım şeydir ve ayrıca bir giriş türü filtresine sahip öğe defteri girdilerinden geliyor
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
SONUÇ (Sadece kısmen gösteriliyor):
Gördüğünüz gibi, ikinci ABC Teknoloji kaydı 2021-Ekim'de bir tüketim gösteriyor ki bu doğru, ancak 2021-Ekim'de de satın alınan sözleşmeli miktara ve bu kayıtta kalanlara göre, tüketimin 9,373 olması ve 2021-Ekim'de doğru olarak görüntülediği 8,990'a kıyasla kısa (383) olması gerekiyor. Bu durumda 383 gerçek tüketimi 2021-Kasım'da düşüyor, ancak kodum bunu almıyor gibi görünüyor.
Bu, her iki Zebra technologies kaydında da tam olarak geçerlidir, burada kalan 0'dır, bu da tamamen tüketildiği anlamına gelir, ancak her ikisi için de satın alma sözleşmesi tarihleri 2021-Eylül'de olduğundan ve tüketim gelecek ay 2021-Ekim'de olduğundan, SQL betiği bunu almaz.
Bunu düzeltmeye yardımcı olacak herhangi bir rehberlik için minnettar olurum ve şimdiden teşekkürler.