2 महीने के डेटा का योग और नवीनतम महीने का डेटा दिखाने के लिए, शीर्ष 50


मेरे पास तालिका है जिसमें भाग संख्या, स्थान, col1, col2, माप1, माप2, माप3 शामिल हैं। माप3 के आधार पर शीर्ष 100 रिकॉर्ड दिखाने होंगे।

बात टेबल पर दो महीने का डेटा लोड करने की है। उदाहरण के लिए जनवरी + फ़रवरी डेटा लोड हो रहा है। भाग संख्या, स्थान के आधार पर, यदि कोई डुप्लिकेट रिकॉर्ड है तो नवीनतम रिकॉर्ड लेना होगा। एसक्यूएल क्वेरी में काम कर रहा हूँ। एसक्यूएल क्वेरी में दो महीने के डेटा का योग, यानी। जनवरी = दिसंबर+जन, फरवरी = फरवरी+जन, उन पर रैंकिंग और रैंक 1 लेना। इस तरह नवीनतम रिकॉर्ड प्राप्त करना। डैक्स का उपयोग करके पावर बाय में इसे कैसे प्राप्त किया जाता है। कोई दिनांक तालिका या स्तंभ नहीं. माहो होना. उदाहरण के लिए: nov2023=23, dec2023=24, jan2024=25, feb2024=26, mar2024=27 इत्यादि।

स्लाइसर पार्टनो, स्थान होना। और तालिका में उन अभिलेखों के लिए क्रम संख्या 1 से 100 तक दिखाना होगा।

मैंने क्या प्रयास किया है:

शीर्ष 50 दिखाने के लिए उपाय बनाया गया। यह ठीक है, लेकिन नवीनतम रिकॉर्ड प्राप्त करने की आवश्यकता है।

समाधान 1

इसे किसी भी सार्थक तरीके से प्राप्त करने के लिए आपको गंभीरता से अपने डीबी को बदलने की आवश्यकता है: स्ट्रिंग्स में दिनांक आधारित डेटा संग्रहीत करना हमेशा एक खराब विचार है और स्ट्रिंग तुलना हमेशा पहले अलग-अलग वर्णों की जोड़ी पर आधारित होती है – बाद वाले को भी नहीं देखा जाता है। तो आदेश होगा:

apr2022
apr2023
aug2022
aug2023
dec2022
dec2023
feb2022
feb2023
jan2022
jul2022
jul2023
jun2022
jun2023
mar2022
mar2023
may2022
may2023
nov2022
nov2023
oct2022
oct2023
sep2022
sep2023

जो काफी हद तक बेकार है.

हालाँकि ऐसा करना संभव है, लेकिन इसमें बहुत मेहनत लगती है – और भाग्य: उदाहरण के लिए, एक फ़्रेंच या जर्मन महीने का नाम आपके कोड को गड़बड़ कर देगा।

CAST फ़ंक्शन आपको यह करने देगा:

एसक्यूएल
CAST('oct2023' AS DATE)

आपको 2023-10-01 देगा लेकिन यह आपके प्रश्नों में बहुत अधिक प्रसंस्करण और जटिलता जोड़ देगा – उन सभी में – और फिर भी आपको प्रत्येक माह के भीतर आवश्यक ऑर्डर नहीं देगा क्योंकि आपके डेटा में यह शामिल नहीं है: सभी तारीखें महीने की पहली होंगी। और इससे प्रदर्शन प्रभावित होगा और साथ ही आपकी पंक्तियों की संख्या भी बढ़ेगी।

कम से कम, अपने DB में एक टाइमस्टैम्प कॉलम (DATETIME या DATETIME2) जोड़ें और इसे सम्मिलित समय (वरीयता के अनुसार UTC में) पर डिफ़ॉल्ट करें और आपके पास वर्तमान में मौजूद स्ट्रिंग आधारित जंक के बजाय इसका उपयोग करें।

コメント

タイトルとURLをコピーしました