【发布时间】:2018-05-25 06:31:27
【问题描述】:
我们有一个像这样的员工表
Employee ID
Name
EmployeeManager 表样
employeeid
employeeManagerid
intyear
intperiod
所以每个经理都是员工,employeemanagerid 是员工表中的外来键,是员工表中的employeeid
一个员工一年内可以有多个经理,这就是 intYear 和 intPeriod,intPeriod 是月份,所以它的值是 1-12
我想要实现的是,如果在一个时期(几个月)中选择了一名经理,并且没有为接下来的三个时期(几个月)分配经理,那么同一个经理 将分配给那个人,
举个例子
employee table
----------------------------------------------------------------
employeeid name
1 a
2 b
3 c
4 d
5 e
-------------------------------------------------------------------
EmployeeManager table
----------------------------------------------------------------------
employeeid employeemanagerid intyear intperiod
-----------------------------------------------------------------------
1 5 2017 3
1 4 2017 4
2 4 2017 6
3 4 2017 6
------------------------------------------------------------------------
我的查询
select e.name,e.employeeid
from employee e
left join employeemanager em
on e.employeeid = em.employeeid
where
em.employeemanagerid = @managerid
and em.intyear = @intyear
and em.intperiod <= @intperiod
the values supplied as a parameter are
@managerid = 4
@intyear = 6
@intperiod = 2017
我想要的结果是
------------------------------------------------------
name employeeid
a 1
b 2
c 3
------------------------------
员工 b,c 是直接匹配,但 a 在第 4 期设置了经理 仍在持续到第 6 期
我应该在查询中更改什么以获得此结果 参数值是从 c# 发送的。
【问题讨论】:
标签: c# sql-server sql-server-2008