내가 하려고 피벗의 행으로 열을 기반으로 하는 형식 지정된 날짜에'yyyy-MMM'고 있는 동안에 이상적으로 작동을 위해 현재 개월 기간 동안,그것은 실패하는 작업을 위해 미래 개월 동안 나는 방법을 알아낼 수 없습니다 이 크게 어떤 의견을 보내 주셔서 감사합니다.
여기에 약간의 배경: 가 양을 나오는 공급업체에서 요약 테이블에 대한 정보를 포함하는 계약체결 계약서와 같은 형식,수량,롯트번호,만든 날짜 형식으로'yyyy-MMM'로 실제적인 날짜 중요하지 않습니다.
남은 양은 또 다른 분야에서 나오는 항목에 레저 항목을 테이블은 기본적으로 합산하는 모든 종류의에 따라 항목이 많이 번호입니다.
소비량은 내가 무슨 노력하고 피벗에 따라 달이었다고 소비도에서 오는 원장 항목 항목을 입력 필터
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
결과(만을 보여주는 부분적으로):
당신이 볼 수 있듯이,두 번째 ABC 기술을 기록하여 소비 2021 년-Oct 는 정확하고,그러나,그에 따라 계약 금액을 구입 한도에서 2021-Oct,그리고 무엇에 남아있는 기록을 소비해야 9,373 및 짧(383)에 비해 8,990 그것은을 정확하게 표시하는 2021 년-Oct. 이 경우 383 실제 소비는 떨어지는 2021 년-Nov,그러나 내 코드는 보이지 않는 선택입니다.
이것은 정확한 경우에 두 얼룩말 기술로 레코드뿐만 아니라,남아있는 곳이 0 는 것을 의미하는 완전히 소모되는,그러나,이후 구매 계약 날짜가 모두들은 2021 년-Sep 과 소비는 미래에 달 2021-Oct,SQL 스크립트를 선택하지 않는다.
나는 감사하는 데 도움이 되는 지침을 해결하고 사전에 감사합니다.