SAP ডাটাবেসে (SQL Server/Oracle/HANA) যখন একটি ক্যারেক্টার ফিল্ড (যেমন T0.Name) এ মাসের নাম বা নম্বর স্ট্রিং হিসেবে থাকে, এবং সেটি নির্দিষ্ট মাস (যেমন আগস্ট = ৮) থেকে শুরু করে ক্রমবদ্ধ করতে হয়, তবে ORDER BY ক্লজে CASE এক্সপ্রেশন ব্যবহার করে কাস্টম সর্টিং করা হয়।
SQL কোয়েরি উদাহরণ
ORDER BY CASE
WHEN CAST(LEFT(T0.Name, 2) AS INT) >= 8
THEN CAST(LEFT(T0.Name, 2) AS INT) - 8
ELSE CAST(LEFT(T0.Name, 2) AS INT) + 4
END
লজিক ব্যাখ্যা
LEFT(T0.Name, 2)— ফিল্ডের প্রথম ২ ক্যারেক্টার (মাস নম্বর, যেমন "01", "08", "12")।CAST(... AS INT)— স্ট্রিংকে ইন্টিজারে কনভার্ট।WHEN ... >= 8 THEN ... - 8— মাস ৮ (আগস্ট) বা তার পরে হলে, ৮ বিয়োগ করে (আগস্ট=০, সেপ্টেম্বর=১, ..., ডিসেম্বর=৪)۔ELSE ... + 4— মাস ৮ এর আগে হলে (জানুয়ারি-জুলাই), ৪ যোগ করে (জানুয়ারি=৫, ..., জুলাই=১১)۔- ফলাফল: সর্ট অর্ডার হবে — আগস্ট, সেপ্টেম্বর, অক্টোবর, নভেম্বর, ডিসেম্বর, জানুয়ারি, ফেব্রুয়ারি, ..., জুলাই।
উপযোগিতা
- ফাইনেনশিয়াল ইয়ার (Financial Year) শুরুর মাস অনুযায়ী রিপোর্ট সর্টিং।
- SAP-এ ফিস্ক্যাল ইয়ার ভেরিয়েন্ট (Fiscal Year Variant) হ্যান্ডলিং।
- ক্যারেক্টার ফিল্ডে স্টোর করা ন্যümerিক মাস সর্ট করার জন কোনো কনভারশন ফাংশন ছাড়া সঠিক সর্টিং নিশ্চিত করে।
মূল পয়েন্টসমূহ
CASEএক্সপ্রেশনORDER BY-এ কাস্টম সর্ট লজিক ইমপ্লিমেন্ট করতে সাহায্য করে।CAST+LEFT/SUBSTRINGদিয়ে স্ট্রিং থেকে নম্বর বের করুন।- পারফরম্যান্স: বড় টেবিলে কম্পিউটেড কলাম বা পারশিয়াল ইন্ডেক্স বিবেচনা করুন।
- SAP HANA-এ
TO_INTবাSUBSTRINGফাংশন ব্যবহার করুন।