a 结果集中的列select
查询与group by
条款必须是:
- 用作其中之一的表达式
group by
标准,或...
- 聚合函数,或...
- 字面值
因此,您无法在单个简单查询中完成您想做的事情。要做的第一件事是以清晰的方式陈述你的问题,例如:
我想找到最新的个人索赔行
我的索赔表中每个组的创建日期
Given
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
query:
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
within group_id
(AK02),您可以获得给定组的重复行。