मैं SQL सर्वर 2005 का उपयोग कर रहा हूं। मेरे पास भुगतान आईडी, उपयोगकर्ता आईडी और टाइमस्टैम्प के साथ एक भुगतान तालिका है। मैं प्रत्येक उपयोगकर्ता के लिए सबसे हालिया भुगतान खोजना चाहता हूं। यह खोजना आसान है और इसका उत्तर ढूंढना आसान है। मैं यह भी जानना चाहता हूं कि सबसे हालिया भुगतान उपयोगकर्ता का पहला भुगतान है या नहीं।SQL सर्वर में प्रति समूह/विभाजन अधिकतम पंक्ति संख्या कैसे प्राप्त करें?
SELECT
p.payment_id,
p.user_id,
ROW_NUMBER() OVER (PARTITION BY p.user_id ORDER BY p.payment_date) AS paymentNumber
FROM
payment p
मैं मानसिक छलांग जो तब की सुविधा देता है मुझे तो प्रति उपयोगकर्ता उच्चतम PaymentNumber लेने नहीं बना रहा हूं:
मैं जिसके बाद प्रत्येक उपयोगकर्ता के भुगतान नंबर होगा। यदि मैं उपरोक्त का उपयोग MAX (PaymentNumber) का उपयोग कर उप-चयन के रूप में करता हूं और फिर user_id द्वारा समूहित करता हूं, तो मुझे भुगतान_आईडी खो देता है जो मुझे चाहिए। लेकिन अगर मैं क्लॉज द्वारा समूह में payment_id भी जोड़ता हूं, तो मैं प्रति भुगतान एक पंक्ति पर वापस आ जाता हूं। मुझे यकीन है कि मैं स्पष्ट दिख रहा हूं। कोई मदद?
वहाँ सब पर मेज पर एक प्राथमिक कुंजी है? – DForck42
प्राथमिक कुंजी payment_id है। – DaveBurns