Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pilih Kolom di SQL bukan di Group By

Kolom dalam kumpulan hasil dari select kueri dengan group by klausa harus:

  • ekspresi yang digunakan sebagai salah satu dari group by kriteria , atau ...
  • fungsi agregat , atau ...
  • nilai literal

Jadi, Anda tidak dapat melakukan apa yang ingin Anda lakukan dalam satu kueri sederhana. Hal pertama yang harus dilakukan adalah menyatakan pernyataan masalah Anda dengan cara yang jelas, seperti:

Diberikan

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 ) ,

)

Hal pertama yang harus dilakukan adalah mengidentifikasi tanggal pembuatan terbaru untuk setiap grup:

select group_id ,
       date_created = max( date_created )
from dbo.claims_table
group by group_id

Itu memberi Anda kriteria pemilihan yang Anda butuhkan (1 baris per grup, dengan 2 kolom:group_id dan tanggal pembuatan highwater) untuk memenuhi bagian pertama persyaratan (memilih baris individual dari setiap grup. Itu harus berupa tabel virtual di select terakhir Anda permintaan:

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

Jika tabel tidak unik menurut date_created dalam group_id (AK02), Anda bisa mendapatkan baris duplikat untuk grup tertentu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sisipan massal menggunakan prosedur tersimpan

  2. Cara membuat kueri pivot di server sql tanpa fungsi agregat

  3. Apa cara terbaik untuk memanfaatkan huruf pertama dari setiap kata dalam string di SQL Server?

  4. mengisolasi sub-string dalam string sebelum simbol di SQL Server 2008

  5. Menghapus nol di depan dari bidang dalam pernyataan SQL