2009-10-20 19 views
6

मैं निम्नलिखित एसक्यूएल मेज,एसक्यूएल: अधिकतम डेटा के आधार पर एकाधिक आईडी के लिए एकल रिकॉर्ड का चयन कैसे करें?

Id  WindSpeed  DateTime 
-------------------------------------- 
1  1.1   2009-09-14 16:11:38.383 
1  1.9   2009-09-15 16:11:38.383 
1  2.0   2009-09-16 16:11:38.383 
1  1.8   2009-09-17 16:11:38.383 
1  1.7   2009-09-19 16:11:38.382 
2  1.9   2009-09-19 16:11:38.383 
1  1.6   2009-09-19 16:11:38.383 
2  1.2   2009-09-20 16:11:38.383 

मैं एक प्रश्न जो मुझे निम्न परिणाम उपरोक्त तालिका से सेट वापस आ जाएगी लिखना चाहते हैं:

Id  WindSpeed  DateTime 
-------------------------------------- 
1  1.6   2009-09-19 16:11:38.383 
2  1.2   2009-09-20 16:11:38.383 

ऊपर reuslt नवीनतम (पर होता है उस आईडी के लिए नवीनतम डेटाटाइम का आधार) एकल प्रविष्टि। जिसका अर्थ है कि मेरे पास डेटाटाइम के साथ एकाधिक रिकॉर्ड आईडी है।

मैं सभी आईडी की नवीनतम एकल प्रविष्टि प्राप्त करना चाहता हूं।

उत्तर

11
SELECT  a.Id, a.WindSpeed, a.DateTime 
FROM   YourTable AS a 
INNER JOIN  
(
    SELECT ID, Max(DateTime) AS DateTime 
    FROM  YourTable 
    GROUP BY ID 
) AS b 
ON   a.ID = b.ID 
AND   a.DateTime = b.DateTime 
+0

धन्यवाद, यह मेरे लिए काम करता ... – Prashant

5
SELECT t1.Id, t1.WindSpeed, t1.DateTime 
    FROM table1 As t1 
WHERE t1.DateTime = (SELECT Max(DateTime) 
         FROM table1 As t2 
         WHERE t2.ID = t1.ID) 
+0

ठीक लग रहा है, लेकिन कृपया 'संपादित कहां a.DateTime = (चयन मैक्स (डेटटाइम) 'लाइन' जहां टी 1। डेटटाइम = (चयन अधिकतम (दिनांक समय) ' – Prashant

2

यह भी आप क्या चाहते हैं करना चाहिए:

SELECT ID, WindSpeed, [DateTime] 
FROM (
    SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY [DateTime] DESC) AS RowNumber, 
     Id, WindSpeed, [DateTime] 
    FROM MyTable 
) T 
WHERE RowNumber = 1 
संबंधित मुद्दे