按 ID 分组,其中同一 ID 用于跨多天的不同对象

时间:2021-03-27 23:38:40

标签: sql sql-server tsql

假设我有一张看起来像这样的表格:

Date    ID  ObjAge
3-20    1   27
3-21    2   32
3-22    1   17
3-22    1   18
3-22    2   3
3-23    1   15
3-23    3   14

对于每个唯一的日期,我想将该日期内的 ID 组合在一起,其中给定日期内每个 ID 的最大 ObjAge 大于 10。因此,我理想的输出表如下所示:

Date    ID  ObjAge
3-20    1   27
3-21    2   32
3-22    1   18
3-23    1   15
3-23    3   14

我的示例查询如下所示:

SELECT [Date], ID, ObjAge,
FROM table1
GROUP BY ID
HAVING MAX(ObjAge > 10);

使用单个日期时,我不会遇到此问题。问题是某一天的对象 ID 号在另一天也用于不同的对象 ID。目前我遇到了一个错误:

<块引用>

[Date] 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

1 个答案:

答案 0 :(得分:0)

您需要将所有选定的列(聚合列除外)包含到 group by 中。它看起来像这样:

SELECT [Date], ID, MAX(ObjAge)
FROM table1
GROUP BY  [Date],ID
HAVING MAX(ObjAge) > 10;

我相信对于你的情况,这也有效:

SELECT [Date], ID, MAX(ObjAge)
FROM table1
Where ObjAge > 10
GROUP BY  [Date],ID;
相关问题