TGViewer
NikAmooz | نیک‌ آموز NikAmooz | نیک‌ آموز @nikamooz · 4.07K subscribers
Post #2816 286
👨‍💻 آخرین رکورد هر گروه را دقیق انتخاب کنید

برای گرفتن تازه‌ترین سفارش هر مشتری، فقط استفاده از MAX(OrderDate) کافی نیست؛ چون هنوز باید سایر ستون‌های همان ردیف را پیدا کنید و زمان‌های مساوی هم می‌توانند نتیجه را مبهم کنند.

یک الگوی روشن، رتبه‌دادن داخل هر گروه است:
WITH ranked AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY CustomerId
ORDER BY OrderDate DESC, OrderId DESC
) AS rn
FROM Sales.Orders
)
SELECT *
FROM ranked
WHERE rn = 1;


در این مثال فرضی، PARTITION BY شماره‌گذاری را برای هر مشتری جدا می‌کند. ترتیب نزولی تاریخ، تازه‌ترین سفارش را اول می‌آورد و OrderId تکلیف زمان‌های برابر را روشن می‌کند.

نکته مهم این است که ستون‌های ORDER BY باید ترتیب یکتایی بسازند؛ وگرنه انتخاب ردیف اول می‌تواند پایدار نباشد.
  • ❤ 7
More from @nikamooz
  1. Oct 9, 2026🐍 یک اشتباه رایج: نصب وابستگی همه پروژه‌های Python در یک محیط اگر دو پروژه به نسخه‌های مت…
  2. Oct 7, 2026📚 کتابخانه نیک‌آموز: Clean Architecture اگر در توسعه نرم‌افزار با معماری، مرزبندی ماژول‌ه…
  3. Oct 6, 2026📚 کتابخانه نیک‌آموز: AI Engineering اگر می‌خواهید از «استفاده از مدل‌های آماده» عبور کنید…
  4. Sep 16, 2026برای همراهان نیک آموزی که هنوز فرصت نکرده‌اند از پیشنهادهای کمپین روز برنامه‌نویسی استفاده…
  5. Sep 15, 2026🚨 برنامه‌نویسا، فرصت داره تموم می‌شه! 👨‍💻👩‍💻 ⏳ امروز آخرین روز کمپین روز برنامه‌نویسه…
  6. Sep 13, 2026👨‍💻 برنامه‌نویسا، این چند روز برای شماست! 👩‍💻 به مناسبت روز برنامه‌نویس قراره توی نیک‌…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →