আমি একটি কংক্রিট ব্যবহার করব, তবে অনুমানমূলক, উদাহরণ।
প্রতিটি অর্ডারে সাধারণত একটি লাইন আইটেম থাকে :
আদেশ:
OrderGUID OrderNumber
========= ============
{FFB2...} STL-7442-1
{3EC6...} MPT-9931-8A
লাইনআইটেমগুলি:
LineItemGUID Order ID Quantity Description
============ ======== ======== =================================
{098FBE3...} 1 7 prefabulated amulite
{1609B09...} 2 32 spurving bearing
তবে মাঝেমধ্যে দুটি লাইন আইটেম সহ অর্ডার আসবে:
LineItemID Order ID Quantity Description
========== ======== ======== =================================
{A58A1...} 6,784,329 5 pentametric fan
{0E9BC...} 6,784,329 5 differential girdlespring
সাধারণত ব্যবহারকারীকে অর্ডারগুলি প্রদর্শন করার সময়:
SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
INNER JOIN LineItems
ON Orders.OrderID = LineItems.OrderID
আমি আদেশে একক আইটেমটি দেখাতে চাই। কিন্তু এই অনিয়মিত অর্ডার দুটি আইটেম ধারণকারী (বা আরো) সঙ্গে, অর্ডার হবে প্রদর্শিত হবে সদৃশ :
OrderNumber Quantity Description
=========== ======== ====================
STL-7442-1 7 prefabulated amulite
MPT-9931-8A 32 spurving bearing
KSG-0619-81 5 panametric fan
KSG-0619-81 5 differential girdlespring
আমি যা চাই তা হল এসকিউএল সার্ভারটি কেবল একটি বাছাই করা , কারণ এটি যথেষ্ট ভাল হবে :
OrderNumber Quantity Description
=========== ======== ====================
STL-7442-1 7 prefabulated amulite
MPT-9931-8A 32 differential girdlespring
KSG-0619-81 5 panametric fan
যদি আমি দুঃসাহসী হয়ে উঠি তবে আমি ব্যবহারকারীকে একটি উপবৃত্তটি দেখাতে চাই যা একের বেশি রয়েছে:
OrderNumber Quantity Description
=========== ======== ====================
STL-7442-1 7 prefabulated amulite
MPT-9931-8A 32 differential girdlespring
KSG-0619-81 5 panametric fan, ...
সুতরাং প্রশ্ন হয় কিভাবে হয়
- "সদৃশ" সারিগুলি মুছে ফেলুন
- সদৃশতা এড়াতে কেবল সারিগুলির একটিতে যোগ দিন
প্রথম প্রচেষ্টা
আমার প্রথম নির্বোধ চেষ্টা ছিল কেবলমাত্র " শীর্ষ 1 " লাইন আইটেমগুলিতে যোগ দেওয়া:
SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
INNER JOIN (
SELECT TOP 1 LineItems.Quantity, LineItems.Description
FROM LineItems
WHERE LineItems.OrderID = Orders.OrderID) LineItems2
ON 1=1
তবে এটি ত্রুটি দেয়:
কলামে বা উপসর্গ 'অর্ডারস' কোয়েরিতে ব্যবহৃত
টেবিলের নাম বা উপনামের সাথে মেলে না
।
সম্ভবত কারণ অভ্যন্তরীণ নির্বাচন বাইরের সারণিটি দেখতে পায় না।
group by
যেখানে আপনি সদৃশ চান না সেগুলি বাদ দিয়ে অন্যান্য সমস্ত কলামের তালিকা তৈরি করতে হবে। সূত্র
group by
?