मेरे पास एक चाइल्ड टेबल है जो कुछ इस तरह है:
[कस्ट डेट टेबल]
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 1 | 2012-04-30 | 20.00 |
| 1 | 2012-03-31 | 50.00 |
| 2 | 2012-04-30 | 0.00 |
| 2 | 2012-03-31 | 10.00 |
| 3 | 2012-03-31 | 60.00 |
| 3 | 2012-02-29 | 10.00 |
मैं इस तरह से परिणाम प्राप्त करने में सक्षम होना चाहता हूं - नवीनतम तारीख के साथ प्रत्येक ग्राहक के लिए एक रिकॉर्ड:
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 1 | 2012-04-30 | 20.00 |
| 2 | 2012-04-30 | 0.00 |
| 3 | 2012-03-31 | 60.00 |
मुझे पता है कि मैं निम्न SQL (SQL सर्वर सिंटैक्स) के साथ प्रत्येक व्यक्ति "ग्राहक आईडी" के लिए ऐसा कर सकता हूं:
select top 1 [Some Date], [Customer ID], [Balance]
from [Cust Date Table]
where [Customer ID] = 2
order by [Some Date] desc
| Customer ID | Some Date | Balance |
+-------------+------------+---------+
| 2 | 2012-04-30 | 0.00 |
लेकिन मुझे यकीन नहीं है कि सभी तीन रिकॉर्ड मुझे कैसे चाहिए। मुझे यकीन नहीं है कि यह एक ऐसी स्थिति है जो उप-क्वेरी या कुछ और के लिए कॉल करती है।
कृपया ध्यान दें कि किसी भी [ग्राहक आईडी] के लिए अधिकतम तिथि भिन्न हो सकती है, (इस उदाहरण में, ग्राहक 3 की अधिकतम तिथि 2012-03-31 है जबकि अन्य रिकॉर्ड में 2012-04-30 की अधिकतम तिथि है)। मैंने कोशिश की है
select [Customer ID], MAX([Some Date]) AS [Latest Date], Balance
from [Cust Date Table]
group by [Customer ID], Balance;
समस्या यह है कि यह प्रत्येक ग्राहक के लिए सिर्फ एक पंक्ति नहीं लौटाता है - यह कई पंक्तियों को लौटाता है।