【发布时间】:2013-04-09 10:08:50
【问题描述】:
我有一个带有 2 个 ID 列的 SQL Server 表:Employee_ID & Type_ID
我的表格包含 4 行:
Row 1 (Employee ID: 904, Type_ID: 3)
Row 2 (Employee ID: 904, Type_ID: 7)
Row 3 (Employee ID: 905, Type_ID: 7)
Row 4 (Employee ID: 905, Type_ID: 7)
我想返回所有员工可用的所有类型 ID。所以只需ID 7。
所以我希望返回 ID 为 7 的 1 行,因为它适用于两个员工(904 和 905)
如果我运行以下 SQL:
SELECT
Type_ID, Count(Type_ID) as MyCount
FROM
EmployeeType
WHERE
Employee_ID IN (904, 905)
GROUP BY
Type_ID
这会返回 2 行
Row 1 (Type_ID: 3, MyCount: 1)
Row 2 (Type_ID: 7, MyCount: 3)
但我只有最高计数的记录(Type_ID 7)。 我尝试添加:
HAVING MAX(Count(CostCentre_ID))
但这显然是非法代码。
如何在我的 SQL 中执行此操作?
【问题讨论】:
-
"deleted" 意味着
row 2的时间戳比row 1更新=> 它用新值覆盖旧的type_ID3 - 7?或者有没有row_id专栏?或者你怎么知道行的顺序? -
刚刚更新,如果第 1 行被删除,应该会读到。
-
@user1131657 我不知道您当前的查询有什么问题。
-
无法从已删除的行中提取信息...预期输出和实际输出是什么?
-
@user1131657 即使包含
3的行被删除,您仍按type_id分组,并且您的查询仍然有效——sqlfiddle.com/#!3/72ef9/1
标签: sql sql-server-2008 count group-by