我正在尝试填充包含字段的表格:
EmpPositioniTrent
EffectiveDate
ManPositioniTrent
两个位置编号来自一个表格,EffectiveDate
填充了与位置编号关联的最新/最新StartDate
,位于另一个表格中。
从此表中:我检索两个位置编号
然后使用下表,我加入Person编号,我想(使用上表中的PersonNumber和ManPerNo字段)哪些具有较晚的开始日期,并使用它来填充EffectiveDate字段在我的新表中。
我到目前为止:
SELECT
a.EmpPositioniTrent,
a.ManPositioniTrent,
MAX(b.StartDate) AS EffectiveDate
FROM [dbo].[STG_People_Manager] a
JOIN [dbo].[STG_0001_ORGANISATION_ASSIGNMENT] b
ON a.PersonNumber = b.PersonNumber
WHERE b.EndDate >= GETDATE()
我想知道我是否需要使用CTE
或(SELECT) AS
来实现此目标,但我完全被卡住了!我曾尝试使用MAX
日期,但无法正确或有效地使用它,因为我找不到比较它们的方法。
非常感谢任何帮助。我也意识到我没有解释得这么好,但我已经尽力了!
答案 0 :(得分:0)
如果这是SQL Server
,我不记得有SELECT AS
INSERT INTO <<table>> (PositionNumber, ManagerPositionNumber, EffectiveDate)
SELECT
a.EmpPositioniTrent
a.ManPositioniTrent
MAX(b.StartDate)
FROM [dbo].[STG_People_Manager] a
JOIN [dbo].[STG_0001_ORGANISATION_ASSIGNMENT] b
ON a.PersonNumber = b.PersonNumber
WHERE b.EndDate >= GETDATE()
GROUP BY a.EmpPositioniTrent, b.ManPositioniTrent
答案 1 :(得分:0)
所以,如果它对其他人有帮助,我会在这里发布我是如何做到的,并希望能比我解释这个问题更好地解释它。
我有一张表(A),其中包括列:
EmpPositionNumber | ManagerPositionNumber
在另一张表(B)中列出了所有
PositionNumbers | StartDates
(管理者和emp之间没有区别)
使用列填充第三个表(C):
EmpPositionNumber | EffectiveDate | ManPositionNumber
我需要比较表B中的 StartDates ,以获得表A每行的两个位置编号,以便能够使用最新的表格填充表C中的 EffectiveDate 日期。
为实现这一目标,最后,我填写了第四张表D:
EmpPositionNumber | ManPositionNumber | StartDate
并且表A中的每一行都填充了两行,表B中的 StartDate 对于这两行是不同的,例如:
EmpPositionNumber | ManPositionNumber | StartDate
A | Aa | 12/1/2016
A | Aa | 15/3/2015
B | Xa | 4/1/2013
B | Xa | 18/5/2016
然后填充表C,我选择了 EmpPositionNumber 和 ManPositionNumber ,以及 MAX(StartDate)GROUP BY EmpPositionNumber,ManPositionNumber
我希望这有道理并得到妥善解释。