Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL में एक कॉलम चुनें जो ग्रुप बाय में नहीं है

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), आप किसी दिए गए समूह के लिए डुप्लिकेट पंक्तियाँ प्राप्त कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlDataSourceEnumerator.Instance.GetDataSources() स्थानीय SQL सर्वर 2008 आवृत्ति का पता नहीं लगाता है

  2. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005/2008:एक्सएमएल बनाम टेक्स्ट/वर्कर डेटा प्रकार

  3. SQL सर्वर (T-SQL) में विभाजन कार्यों की सूची लौटाएँ

  4. एसक्यूएल वर्कर (अधिकतम) बनाम वर्कर (फिक्स)

  5. मैं SQL सर्वर में किसी निश्चित तिथि से बड़ी सभी तिथियों के लिए क्वेरी कैसे करूं?