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. Как мога да заредя голям плосък файл в таблица на база данни с помощта на SSIS?

  2. Достъпът е отказан за активиран xp_cmdshell за администраторския потребител

  3. Извличане на URL адреси от уебсайт?

  4. Изключение за максимални параметри на SqlCommand при 2099 параметъра

  5. SQL Server - Вложени транзакции в съхранена процедура