회전식 분야에 기초한 날짜 범위에서 테이블 B>=날짜 범위에서 테이블

0

질문

내가 하려고 피벗의 행으로 열을 기반으로 하는 형식 지정된 날짜에'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

결과(만을 보여주는 부분적으로):

enter image description here

당신이 볼 수 있듯이,두 번째 ABC 기술을 기록하여 소비 2021 년-Oct 는 정확하고,그러나,그에 따라 계약 금액을 구입 한도에서 2021-Oct,그리고 무엇에 남아있는 기록을 소비해야 9,373 및 짧(383)에 비해 8,990 그것은을 정확하게 표시하는 2021 년-Oct. 이 경우 383 실제 소비는 떨어지는 2021 년-Nov,그러나 내 코드는 보이지 않는 선택입니다.

이것은 정확한 경우에 두 얼룩말 기술로 레코드뿐만 아니라,남아있는 곳이 0 는 것을 의미하는 완전히 소모되는,그러나,이후 구매 계약 날짜가 모두들은 2021 년-Sep 과 소비는 미래에 달 2021-Oct,SQL 스크립트를 선택하지 않는다.

나는 감사하는 데 도움이 되는 지침을 해결하고 사전에 감사합니다.

pivot sql sql-server tsql
2021-11-22 22:40:04
1

최고의 응답

0

당신은 회전식에 따라 VS.[날짜]는 경우가 많이 구입하지 않을 때,그것은 소모되었습니다. 지난 세 개의 열이 표시됩니다 숫자 할 때의 항목들을 구입하고 소비됩니다.

신의 피봇의 전체 데이터 집합,이동,피벗로 세 번째 하위. 이 단순화하여 쿼리를 받고 많은 정보를 포함 Contracted_Qty 및 Remaining_Qty 먼저 가입하여 세 번째 하위는 피벗의 설정 Consumed_Qty 에 의해 세 개월.

SELECT VS.[Vendor Name], VS.[Vendor No_] AS 'Vendor_No',
VS.[Contracted_Quantity],
RQ.Remaining_Qty AS Remaining_Quantity,
'Contract Type' = 
CASE 
  WHEN VS.[Contract Type] = 1 THEN 'CONTRACT A'
  WHEN VS.[Contract Type] = 2 THEN 'CONTRACT B'
  ELSE 'OTHERS'
  END,
CQ.[2021-Sep], CQ.[2021-Oct], CQ.[2021-Nov]

FROM
    (
    /* List of Lots with details */
    SELECT 
        [Document No_],[Vendor No_],[Lot No_], [Purch_ Contract No_],[Contract Type],[Quantity] AS [Contracted_Quantity]
    FROM [A].[dbo].[Company$Volume Summary]
    ) VS

    /* Remaining Quantity for each Lot */
    LEFT JOIN (
        SELECT [Lot No_] , SUM([Remaining Quantity]) AS Remaining_Quantity 
        FROM [A].[dbo].[Company$Item Ledger Entry]
        GROUP BY [Lot No_]
        ) RQ on RQ.[Lot No_] = VS.[Lot No_]

    /* Consumed Quantity per Lot for three months*/
    LEFT JOIN (

        SELECT [Lot No_], [2021-Sep], [2021-Oct], [2021-Nov]
        FROM 
        (
        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')
        ) AS src
        PIVOT
        (
         SUM(Consumed_Qty)
          for [Date] in ([2021-Sep], [2021-Oct], [2021-Nov])
          ) pvt

        ) CQ on CQ.[Lot No_] = VS.[Lot No_]
;

I 테스트 할 수 없습니다 이 쿼리 데이터 없이 그러나 그것은 매우 가깝습니다.

2021-11-23 20:47:23

귀하의 답변을 주셔서 감사합니다. 이유는 내가 사용하 SUM(남)이기 때문에 항목 레저 항목을 테이블에 여러 개의 항목 형태,구매,조절,소비입니다. 합의 모든 항목은 유형에 대한 각각의 많은 수를 얻을 것입니다 나머지 qty 가 넥타이를 많은 인벤토리 데이터 복원 기능이 있습니다. 그러나 나는 이제 사용 CQ.날에서 피벗고 제거>=날짜 가입하에 CQ,지금은 중복 구매에 대한 기록 매월의 소비를 만드는 총 구매에 의해 많은 잘못된 지금입니다. 다른 어떤 데이터가 제공하는 설명하는 데 도움이 내 문제가 좋을까? 많이 감사합니다 당신의 시간과이
Vic

다음 조정을 이동하는 것 피벗로 세 번째 하위 쿼리가 있습니다. 신의 피봇의 전체 데이터 집합을 얻을 포함하여 많은 정보에 Contracted_Qty 및 Remaining_Qty 고 다음에 가입하는 세 번째 하위는 피벗의 설정 Consumed_Qty 에 의해 세 개월.
RobertT

나는 아직도 많은 관심을 얻을 수 있는 양이 남아있는 합산하여 몇 번호입니다. 를 제공할 수 있습니 일부 샘플 데이터를 설명하기 위하여 하는가?
RobertT

결코 마음에는 양이 남아있습니다. 나는 단지 실현의 장부 테이블에 기록해야 한다 각 번호에서 두 개의 열이 있습니다. 남은 양은 긍정적 또는 부정적인 수에 따라 항목 형식입니다. 합산하는 것이 산출량이 남아있습니다. 열 이름을 던졌습니다.
RobertT

네 맞습니다! 그게 어떻게 원장 테이블 레코드는 각 항목입니다.
Vic

그건 좋은 생각이 아니다! 나는 것이 이동하십시오 피벗으로 하위에,당신은에 대한 첫 번째 부분이지만,나는 나의 피벗에 따라 구매 날짜를 대신 소비 날짜,그리고 다음 내가 그룹으로 많은 아니다. 는 듯했 문제입니다. 그러나 나의 생각처럼 움직이는 피벗 세 번째 하위,당신을 유지하시기 바랍니다. 감사
Vic

답 업데이트한 피드백을 기반으로 의견에
RobertT

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................