多对一关系的sql查询

标签 sql sql-server

我有一个包含 3 列的表格

表:StaffDepartmentAssgnment

StaffId         DepartmentId          AssignedFromDate

S1              Dept1                 2013-02-08
S2              Dept1                 2013-02-08
S3              Dept2                 2013-02-01 
S1              Dept2                 2013-02-01

我想找出当前在 Dept2 中的所有 StaffId。我该如何为它编写查询?

最佳答案

这是一个独立于数据库引擎的解决方案

select * from 
( 
   select StaffId, max(AssignedFromDate) as adate
   from StaffDepartmentAssgnment 
   group by staffid
) x
inner join StaffDepartmentAssgnment y
      on y.staffid = x.staffid and adate = y.AssignedFromDate
where DepartmentId = 'dept2'

SQLFiddle demo

关于多对一关系的sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812091/

相关文章:

c# - 使用 SqlBulkCopy 填充非常大的表的最佳方法是什么?

mysql - 如何获取通过加入返回的多个帐户的金额总和

sql - SQL Server 中的 LIKE 运算符区分大小写吗?

mysql - 从 SQL Server 导出到 MySQL 编码问题

sql-server - 如何在 SQL Server 中使用 DACPAC 将可空列更新为不可空列

sql - 如何在 SQL Server 中使用基于 2 列的 group by

c# - Entity Framework 代码优先的 XML 字段

MySQL 查询永远加载

sql - 删除另一个表中出现一次的值

Mysql 分组 - 优先级不为空 - 可能吗?