Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wybierz kolumnę w SQL, która nie znajduje się w Grupuj według

Kolumny w zestawie wyników select zapytanie z group by klauzula musi być:

  • wyrażenie używane jako jedno z group by kryteria , lub ...
  • funkcja agregująca lub ...
  • wartość dosłowna

Nie możesz więc zrobić tego, co chcesz, w jednym, prostym zapytaniu. Pierwszą rzeczą do zrobienia jest jasne określenie problemu, na przykład:

Przyznane

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

)

Pierwszą rzeczą do zrobienia jest określenie najnowszej daty utworzenia każdej grupy:

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

To daje ci kryteria wyboru, których potrzebujesz (1 wiersz na grupę, z 2 kolumnami:identyfikator_grupy i data utworzenia szczytu), aby spełnić pierwszą część wymagania (wybierając pojedynczy wiersz z każdej grupy. To musi być wirtualna tabela w Twój ostateczny select zapytanie:

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

Jeśli tabela nie jest unikalna według date_created w ramach group_id (AK02), możesz uzyskać zduplikowane wiersze dla danej grupy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuń zduplikowane rekordy z widoku

  2. java.sql.SQLException:nie znaleziono odpowiedniego sterownika dla jdbc:sqlserver

  3. Pełna tabela transpozycji SQL

  4. Zastosowanie funkcji agregującej MIN do pola BIT

  5. Nie używaj sys.sql_dependencies w SQL Server (jest przestarzały)