我有两张桌子。
TableA包含
EventID,Date,Manager
TableB包含
经理,部门,日期开始,日期结束。
在TableB中,管理人员经常切换部门,因此查看条目如下
Manager1,塔尔萨,1-1-2012,6-1-2012
爱荷华市Manager1,6-2-2012,12-31-2012
是意料之中的。
我希望根据事件发生时经理所在的部门将每个EventID分配给一个部门。
所以,例如,TableA
000001,2-1-2012,Manager1
我想要000001的回报,图尔萨
如果TableA有
000002,8-1-2012,Manager1
我想要000001,爱荷华城
更新: user2034570的解决方案奏效了!谢谢
发布于 2014-04-25 18:32:51
您需要在FK上加入并在WHERE子句中使用
选择A.EventID,B.Department从TableA A内部连接TableB B ON A.Manager = B.Manager,其中A.Date在B.DateStarted和B.DateEnded之间
发布于 2014-04-25 18:15:26
Select Max(EventID),Date, Manager From TableA Group By Date, Manager发布于 2014-04-25 18:37:24
假设您有两个这样的表:
CREATE TABLE Event(EventID INT, Dates DATE, ManagerName NVARCHAR(20))
CREATE TABLE Manager (ManagerName NVARCHAR(20), Department NVARCHAR(20),
DateStarted DATE, DateEnded DATE)以及其中所载的数据(如你所提供的):
插入事件值(1,'2014-03-25','Manager1')
INSERT INTO Manager VALUES('Manager1', 'Tulsa', '2014-03-25', '2014-03-28')
INSERT INTO Manager VALUES('Manager1', 'Iowa City', '2014-01-25', '2014-02-25')然后,要获得所要查找的数据类型,您必须按如下方式构建查询:
SELECT event.EventID,
manager.Department
FROM Manager manager
INNER JOIN Event event ON manager.ManagerName = event.ManagerName
WHERE manager.DateStarted = '2014-03-25'您可以在这里查看这个:http://sqlfiddle.com/#!3/612e6/2
您也可以将此查询框为:
SELECT event.EventID,
manager.Department
FROM Manager manager
INNER JOIN Event event ON manager.ManagerName = event.ManagerName
WHERE event.Dates BETWEEN manager.DateStarted AND manager.DateEnded您可以在这里查看这个:http://sqlfiddle.com/#!3/612e6/3
你可以用这两种中的任何一种适合你的需要。
这两种方法都会获得以下结果:
EventID Department
1 Tulsa希望这会有帮助!
https://stackoverflow.com/questions/23300139
复制相似问题