select
. के परिणाम सेट में कॉलम group by
. के साथ क्वेरी खंड होना चाहिए:
- एक अभिव्यक्ति जिसका उपयोग
group by
. में से एक के रूप में किया जाता है मानदंड , या ... - एक समग्र कार्य , या ...
- एक शाब्दिक मूल्य
इसलिए, आप वह नहीं कर सकते जो आप एक एकल, सरल क्वेरी में करना चाहते हैं। सबसे पहले आपको अपनी समस्या का विवरण स्पष्ट तरीके से बताना है, कुछ इस तरह:
दिया गया
create table dbo.some_claims_table
(
claim_id int not null ,
group_id int not null ,
date_created datetime not null ,
constraint some_table_PK primary key ( claim_id ) ,
constraint some_table_AK01 unique ( group_id , claim_id ) ,
constraint some_Table_AK02 unique ( group_id , date_created ) ,
)
पहली बात यह है कि प्रत्येक समूह के लिए सबसे हाल की निर्माण तिथि की पहचान करें:
select group_id ,
date_created = max( date_created )
from dbo.claims_table
group by group_id
यह आपको आवश्यकता के पहले भाग को पूरा करने के लिए (प्रत्येक समूह से अलग-अलग पंक्ति का चयन करने के लिए) आपको आवश्यक चयन मानदंड देता है (1 पंक्ति प्रति समूह, 2 कॉलम के साथ:group_id और हाईवाटर निर्मित तिथि)। इसमें वर्चुअल टेबल होना आवश्यक है आपका अंतिम select
क्वेरी:
select *
from dbo.claims_table t
join ( select group_id ,
date_created = max( date_created )
from dbo.claims_table
group by group_id
) x on x.group_id = t.group_id
and x.date_created = t.date_created
यदि तालिका date_created
. द्वारा अद्वितीय नहीं है group_id
. के अंदर (AK02), आप किसी दिए गए समूह के लिए डुप्लिकेट पंक्तियाँ प्राप्त कर सकते हैं।