0
我试图创建一个为员工所做的所有最新付款的表。原始表格包含自从他们开始以来对员工进行的所有付款。我创建了一个派生表,只给我带有最新日期的记录。SQL Group通过派生表的问题
我仍然有一些重复的付款日期是相同的,在这种情况下,我想将这些付款添加在一起,以便它们出现在一行上。
以下是我的工作代码;
SELECT T1.EmployeeCode
, T2.Staff_Number
, T2.Firstname + ' ' + T2.Surname AS Name
, T1.PaymentDate
, T1.p1
, T1.p2
, T1.p3
FROM DB1.dbo.PARTIFPSNI AS T1
--This section is supposed to return only the latest date
INNER JOIN (
SELECT EmployeeCode, MAX(PaymentDate) as MaxDate
FROM DB1.dbo.PARTIFPSNI
GROUP BY EmployeeCode
) T1A ON T1.EmployeeCode = T1A.EmployeeCode and T1.PaymentDate = T1A.MaxDate
LEFT JOIN DB2.dbo.Personnel_Records AS T2 ON (T1.EmployeeCode = T2.Staff_Number)
这将返回下面;
我似乎有P1加在一起,P2 P3 &问题。我认为这是因为我试图两次使用GROUP BY函数。
一些和/或混淆?在WHERE子句中添加一些额外的括号以使事情更清晰。 – jarlh
编辑您的问题并提供样本数据和期望的结果。 –
顺便提一下,这是一个伪外连接。外连接行中的列将为空,因此对于外连接行,“T2.Staff_Number IS NOT NULL”永远不会为真,这会使您的连接变为单纯的内连接。 –