【发布时间】:2018-12-21 19:21:02
【问题描述】:
我正在尝试对我的“历史”表进行查询并按“TypeId”对结果进行分组
我有一列包含在每个组(计数器)上找到的注册表数量,用于计算有多少个注册表,但如果多次找到 TypeId = 288,我只想计算 1
这是我的查询:
SELECT h.TypeId, t.Description, count(*) as Counter
FROM Hystory h
INNER JOIN HistoryType t on h.TypeId = t.Id
WHERE h.Code in (-- here list of codes)
GROUP BY h.TypeId
在这种情况下,我怎样才能使条件只计数 1?
History:
Id | TypeId | Code | Date
1 | 23 | 2222 | xxxx
2 | 233 | 2222 | xxxx
3 | 288 | 2222 | xxxx
4 | 288 | 2222 | xxxx
5 | 23 | 2222 | xxxx
..
HistoryType:
Id | Description
23 | User add file
233 | User modify file
288 | User access file
..
所以,对于 code = 2222 的查询,我想得到:
TypeId | Description | Counter
23 | User add file | 2
233 | User edit file | 1
288 | User access file| 1
【问题讨论】:
-
帮助我们帮助您 - 请发布表格的结构、一些示例数据以及您希望为此示例获得的结果。
-
(1) 用您正在使用的数据库标记您的问题。 (2) 样本数据和期望的结果会很有帮助。
-
该查询似乎是错误的......它如何让您仅按 TypeId 进行分组,同时在 select 中声明了 Date 和 Description 字段?
-
@Mureinki 添加了更多信息
标签: sql sql-server-2012 group-by count