पिवट एक क्षेत्र के आधार पर तिथि सीमा में टेबल ख है कि >= तिथि सीमा तालिका में एक

0

सवाल

मैं कोशिश कर रहा हूँ पिवट करने के लिए एक पंक्ति में स्तंभों पर आधारित हैं कि स्वरूपित दिनांकों 'yyyy-एम एम एम' और, जबकि यह काम करता है के रूप में की उम्मीद के लिए एक वर्तमान महीने की अवधि में, यह विफल रहता है, काम करने के लिए भविष्य के लिए महीने और मैं नहीं कर सकते हैं बाहर आंकड़ा कैसे इसे ठीक करने के लिए और बहुत किसी भी प्रतिक्रिया की सराहना करते हैं इस पर.

यहाँ एक छोटी सी पृष्ठभूमि की बिट: मैं खरीदा है मात्रा से आ रही एक विक्रेता सारांश तालिका शामिल है कि जानकारी के बारे में एक अनुबंध के रूप में इस तरह के अनुबंध के प्रकार, मात्रा, बहुत संख्या, निर्माण तिथि में स्वरूपित 'yyyy-एम एम एम' के रूप में वास्तविक तिथि फर्क नहीं पड़ता, इस उद्देश्य के लिए.

शेष मात्रा है एक और क्षेत्र से आ रही एक आइटम लेज़र प्रविष्टि तालिका है जो अनिवार्य रूप से संक्षेप में सभी प्रकार की प्रविष्टियों के आधार पर बहुत संख्या है.

भस्म मात्रा है क्या मैं कोशिश कर रहा हूँ करने के लिए धुरी के आधार पर महीने यह भस्म हो गया था और यह भी आ रहा है से आइटम लेज़र प्रविष्टियों के साथ एक प्रविष्टि प्रकार से फिल्टर

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

के रूप में आप देख सकते हैं, दूसरी एबीसी प्रौद्योगिकी रिकॉर्ड से पता चलता है एक की खपत में 2021-Oct जो सही है, तथापि, के आधार पर कि अनुबंधित राशि खरीदा भी 2021 में-अक्टूबर, और क्या शेष है, जो रिकॉर्ड, खपत की जरूरत के लिए जा 9,373 और कम है (383) की तुलना में 8,990 यह सही ढंग से प्रदर्शित करने में 2021-अक्तूबर. इस मामले में 383 वास्तविक खपत है गिरने में 2021-नवंबर, हालांकि, अपने कोड के लिए प्रतीत नहीं होता उस उठाओ.

इस सटीक मामले में दोनों ज़ेबरा प्रौद्योगिकियों के रिकॉर्ड के रूप में अच्छी तरह से, जहां शेष है 0, जो मतलब होगा यह किया गया है, पूरी तरह से भस्म हो जाता है, हालांकि, के बाद से खरीद अनुबंध के लिए तारीखों के रूप में 2021-सितंबर और खपत भविष्य में महीने 2021-अक्तूबर, SQL स्क्रिप्ट को लेने नहीं करता है ।

मैं सराहना करते हैं किसी भी मार्गदर्शन में मदद करने के लिए ठीक इस और धन्यवाद अग्रिम में.

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

सबसे अच्छा जवाब

0

आप कर रहे हैं पिवट पर आधारित बनाम.[तारीख] जो है, जब बहुत कुछ खरीदा गया था, जब नहीं यह भस्म हो गया था. पिछले तीन स्तंभों ही दिखाई देगा संख्या है जब आइटम खरीदे गए थे और भस्म एक ही महीने में.

के बजाय पिवट पूरे डाटासेट, चाल धुरी में तीसरे सबक्वेरी. इस सरल प्रश्न के लिए हो रही द्वारा बहुत कुछ जानकारी सहित Contracted_Qty और Remaining_Qty पहली और फिर शामिल होने के लिए तीसरे सबक्वेरी है जो pivoted सेट के 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_]
;

मैं परीक्षण नहीं कर सकता इस क्वेरी डेटा के बिना, लेकिन यह बहुत करीब होना चाहिए.

2021-11-23 20:47:23

आपकी प्रतिक्रिया के लिए धन्यवाद. कारण है कि मैं का उपयोग कर रहा हूँ योग(शेष) है, क्योंकि आइटम लेज़र प्रविष्टि तालिका में एकाधिक प्रविष्टि प्रकार, खरीद, समायोजन की खपत । योग के सभी प्रविष्टि प्रकार के प्रत्येक के लिए बहुत कुछ संख्या है क्या हो जाता है मुझे करने के लिए शेष मात्रा और यह टाई करने के लिए बाहर मेरे बहुत सूची खाता बही. हालांकि, जब मैं अब का उपयोग करें सीक्यू । तारीख में धुरी और निकालें >= तिथि पर शामिल होने सीक्यू, यह अब डुप्लिकेट खरीद रिकॉर्ड के लिए प्रत्येक माह की खपत बनाने खरीदे गए कुल ने बहुत गलत टाइम. क्या अन्य डेटा मैं कर सकता प्रदान करने के लिए समझाने में मदद मेरी समस्या बेहतर है? ज्यादा अपने समय की सराहना करते हैं और इस के साथ मदद
Vic

अगले समायोजन के लिए किया जाएगा स्थानांतरित करने के लिए धुरी में तीसरे उप क्वेरी । के बजाय पिवट पूरे डाटासेट मिलता है, बहुत कुछ विवरण सहित Contracted_Qty और Remaining_Qty और फिर शामिल होने के लिए तीसरे सबक्वेरी है जो pivoted सेट के Consumed_Qty द्वारा बहुत से तीन महीने.
RobertT

मैं अभी भी कर रहा हूँ कि कैसे उत्सुक आप प्राप्त कर सकते हैं मात्रा में शेष द्वारा संक्षेप में कुछ संख्या है । कर सकते हैं आप प्रदान करते हैं, कुछ नमूना डेटा प्रदर्शित करने के लिए?
RobertT

कभी मन मात्रा पर शेष. मैं बस एहसास हुआ कि अपने खाता बही तालिका में रिकॉर्ड संख्या में हर दो कॉलम है. शेष मात्रा में या तो एक सकारात्मक या नकारात्मक संख्या के आधार पर प्रविष्टि प्रकार है । संक्षेप में यह होता है उपज की मात्रा में शेष. स्तंभ नाम मुझे दूर फेंक दिया.
RobertT

हाँ है कि सही है! Thats कैसे बही तालिका रिकॉर्ड प्रत्येक प्रविष्टि.
Vic

thats एक अच्छा विचार है! मैं कोशिश करेंगे चलती धुरी में सबक्वेरी, आप के बारे में सही थे पहला हिस्सा है, हालांकि, मैं था मेरे धुरी के आधार पर खरीद की तारीख के बजाय खपत की तारीख, और अगले मैं समूहीकृत द्वारा बहुत कुछ नहीं. जो लग रहा था के लिए मुद्दे तय कर दी है. लेकिन मैं इस विचार की तरह चलती धुरी के लिए तीसरे सबक्वेरी रखेंगे तुम पोस्ट किया गया! धन्यवाद
Vic

जवाब के आधार पर अद्यतन टिप्पणियों में प्रतिक्रिया
RobertT

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में