मेरे पास एक तालिका है जिसमें एमएस एसक्यूएल 2005 तालिका में कई अलग-अलग "चीजें" के लिए कीमतें हैं। प्रति दिन प्रति सैकड़ों रिकॉर्ड हैं और अलग-अलग चीजों को अलग-अलग समय पर मूल्य अपडेट मिलते हैं।नवीनतम मूल्य प्राप्त करने के लिए SQL क्वेरी
ID uniqueidentifier not null,
ThingID int NOT NULL,
PriceDateTime datetime NOT NULL,
Price decimal(18,4) NOT NULL
मुझे चीजों के समूह के लिए आज की नवीनतम कीमतें प्राप्त करने की आवश्यकता है। नीचे दी गई क्वेरी काम करती है लेकिन मुझे सैकड़ों पंक्तियां मिल रही हैं और मुझे उन्हें लूप करना होगा और केवल थिंगिड प्रति नवीनतम निकालना होगा। मैं कैसे कर सकता हूं (उदा। ग्रुप बाय के माध्यम से) कहता है कि मैं प्रति थिंगिड में नवीनतम एक चाहता हूं? या मुझे subqueries का उपयोग करना होगा?
SELECT *
FROM Thing
WHERE ThingID IN (1,2,3,4,5,6)
AND PriceDate > cast(convert(varchar(20), getdate(), 106) as DateTime)
अद्यतन: जटिलता को छिपाने के प्रयास में मैं एक एक पूर्णांक के आईडी कॉलम डाल दिया। वास्तविक जीवन में यह GUID है (और अनुक्रमिक प्रकार नहीं)। मैंने अद्वितीय पहचानकर्ता का उपयोग करने के लिए ऊपर तालिका तालिका को अद्यतन किया है।
@BlaM: दुर्भाग्यवश आईडी एक GUID है और एक Int नहीं है। (जिसे आप उस समय नहीं जानते थे)। माफ़ कीजिये। – Marius